如何使用 Vue 命名槽渲染静态内容列表?

2023-11-24

我无法弄清楚如何让以下内容发挥作用:

我的家长模板

<comp>
  <a href="#" slot="links">link 1</a>
  <a href="#" slot="links">link 2</a>
</comp>

和我的组件comp模板如下所示:

<ul class="comp">
  <li class="comp-item"><slot name="links"></slot></li>
</ul>

目前我所有的主播都指向那首单曲li标签(这是预期的) 但我希望能够生产多个li对于我插入的每个命名插槽,如下所示:

<ul class="comp">
  <li class="comp-item"><a href="#" slot="links">link 1</a></li>
  <li class="comp-item"><a href="#" slot="links">link 2</a></li>
</ul>

有没有什么方法可以在不使用作用域插槽的情况下实现我所需要的?因为我的内容是纯 HTML,所以我觉得没有必要将静态内容放入 prop 中来渲染它们。

据我所知,大多数 vue UI 框架都要求您为列表项使用另一个自定义组件,我觉得这个问题已经过时了。还有其他方法可以做到这一点吗?


这可以通过渲染函数轻松完成。

Vue.component("comp", {
  render(h){
    let links = this.$slots.links.map(l => h('li', {class: "comp-item"}, [l]))
    return h('ul', {class: 'comp'}, links)
  }
})

这是一个工作示例。

console.clear()

Vue.component("comp", {
  render(h){
    let links = this.$slots.links.map(l => h('li', {class: "comp-item"}, [l]))
    return h('ul', {class: 'comp'}, links)
  }
})

new Vue({
  el: "#app"
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
<div id="app">
  <comp>
    <a href="#" slot="links">link 1</a>
    <a href="#" slot="links">link 2</a>
  </comp>
</div>

或者借助用于渲染 vNode 的小型实用程序组件,您可以使用模板来完成此操作。

Vue.component("vnode", {
  functional: true,
  render(h, context){
    return context.props.node
  }
})

Vue.component("comp", {
  template: `
    <ul class="comp">
      <li class="comp-item" v-for="link in $slots.links"><vnode :node="link" /></li>
    </ul>
  `
})

new Vue({
  el: "#app"
})
<script src="https://cdnjs.cloudflare.com/ajax/libs/vue/2.5.13/vue.js"></script>
<div id="app">
  <comp>
    <a href="#" slot="links">link 1</a>
    <a href="#" slot="links">link 2</a>
  </comp>
</div>
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何使用 Vue 命名槽渲染静态内容列表? 的相关文章

随机推荐

  • 在 Prolog 中使用差异列表的上下文无关语法如何运作?

    我正在阅读有关 Prolog 中上下文无关语法的教程 他们在页面底部提到使用差异列表在 Prolog 中实现上下文无关语法 其中包括以下代码块 s X Z np X Y vp Y Z np X Z det X Y n Y Z vp X Z
  • 使用 ggplot 库中的 geom_path

    我有12个变量 M1 M2 M12 我为此计算了某个统计量x df data frame model factor paste M 1 28 sep levels paste M 1 28 sep x runif 28 1 1 05 lev
  • ios中如何将数据存储到NSCache中?

    我对 NSCache 很陌生 我有一个 API 调用 它会产生多个对象 如何将这些对象存储在 NSCache 中 以便我不需要再次调用 API NSCache 中可以存储多少数据 NSCache 中存储数据是否有特定限制 请帮我 看一眼文档
  • 如何使用 jQuery 防止用户更改页面

    我有一个页面 其中包含通过 ajaxSubmit 提交的表单 因此 无需更改页面 我的目标是 当用户尝试更改页面 甚至关闭浏览器 时 我询问他是否真的想退出页面而不发送表单 正如 gmail 所做的那样 例如 Gmail 通过类似 wind
  • 属性错误:“响应”对象没有属性“文本”

    page requests get url tree html fromstring page text 在第 2 行我得到 AttributeError Response object has no attribute text 我已导入
  • 关于不可变字符串的改变id

    一些关于id类型的对象str 在Python 2 7中 让我困惑 这str类型是不可变的 所以我希望一旦创建它 它将始终具有相同的id 我相信我的表述不太好 所以我将发布一个输入和输出序列的示例 gt gt gt id so 1406141
  • 转义百分号 DB2 SQL

    我正在尝试选择连续包含四个百分号的数据 如何转义百分号以便我的 LIKE 条件起作用 Thanks Use 使用转义字符子句 select from tbl where fld like escape 这将搜索包含以下内容的所有记录 中的字
  • 从 .ttf 生成 .afm [关闭]

    Closed 这个问题不符合堆栈溢出指南 目前不接受答案 我正在使用这个库从 PHP 生成 pdf 文件 http www fpdf org 不过 我目前正忙着添加新字体 特别是从 ttf 字体文件生成 afm 文件的步骤 我正在按照此处的
  • 如何在 Android 中按定义的时间间隔运行可运行线程?

    我开发了一个应用程序 用于在 Android 模拟器屏幕中按定义的时间间隔显示一些文本 我正在使用Handler班级 这是我的代码片段 handler new Handler Runnable r new Runnable public v
  • 不使用 ATL 实现 COM IDispatch

    我正在编写一个 Excel RTD 服务器实现 但我陷入了实现的 coclass 的样板中IDispatch 我无法访问 ATL 但我正在使用 ActiveQt 尽管我也对如何在原始 C 或 C 中执行此操作感兴趣 如何正确实施IDispa
  • Python:使用打印命令避免换行[重复]

    这个问题在这里已经有答案了 当我使用print命令 它打印我想要的任何内容 然后转到不同的行 例如 print this should be print on the same line 应该返回 这应该在同一行 但相反返回 这应该是在同一
  • 仅当 URL 具有某些参数时才显示引导程序模式

    有没有办法使用 Bootstrap 的模态功能来评估参数的 URL 并自动打开模态 例如 访问该网站的 URL 的访问者 example com没有看到模态 他们只看到常规网站 访问者通过 URL 访问该网站example com offe
  • Python 编程 - numpy polyfit 说 NAN

    我编写的非常简单的代码遇到了一些问题 我有 4 组数据 想要使用 numpy polyfit 生成多项式最佳拟合线 使用 Polyfit 时 其中 3 个列表会产生数字 但使用 Polyfit 时 第三个数据集会产生 NAN 下面是代码和打
  • 如何按字符串过滤pandas数据框?

    我有一个 pandas 数据框 我想按列中的特定单词 测试 进行过滤 我试过 df df col str contains test 但它返回一个空数据框 仅包含列名称 对于输出 我正在寻找一个包含所有包含单词 test 的行的数据框 我能
  • 函数名两边的括号是什么意思?

    在我的项目源文件之一中 我找到了这个 C 函数定义 int foo int bar return foo bar 注意 旁边没有星号foo 所以它不是函数指针 或者是吗 递归调用发生了什么 在没有任何预处理器的情况下 foo的签名相当于 i
  • 在 Pandas 中,如何将字符串转换为以毫秒为单位的日期时间对象?

    我的数据框中有一列事件的时间戳 看起来像 2016 06 10 18 58 25 675 最后 3 位数字是毫秒 是否有一种有效的方法将此列转换为 Pandas 数据时间类型 当我尝试时 pd to datetime 2016 06 10
  • 使用@EmbeddedId和@MapsId会导致插入NULL(违反NOT NULL约束)

    使用以下代码 Embeddable public class EmployeeId implements Serializable Column name company id private Long companyId Column n
  • Node.js 通过 HTTPS 提供服务时会切断文件

    我正在尝试使用 Node js 提供一些 JavaScript 文件 但出于某种原因 这些文件在传输过程中被切断 代码 httpsServer http createServer function req res var path url
  • ASP.NET MVC 中基于文档的安全性

    我已经了解 ASP NET MVC 中基于用户和角色的安全性 但现在我需要一些更细粒度的东西 假设我有一个文档列表 其中一些用户已获得授权 另一些则没有 每个文档在数据库的文档表中都有对应的记录 如果用户具有安全访问权限 则可以下载文档以供
  • 如何使用 Vue 命名槽渲染静态内容列表?

    我无法弄清楚如何让以下内容发挥作用 我的家长模板