你可以在 Vue 模板中渲染 VNode 吗?

Posted

技术标签:

【中文标题】你可以在 Vue 模板中渲染 VNode 吗?【英文标题】:Can you render VNodes in a Vue template? 【发布时间】:2018-08-27 09:31:25 【问题描述】:

我有一个渲染函数将一些数据传递到一个作用域插槽的情况。作为此数据的一部分,我想包括一些由渲染函数构造的 VNode,它们可以选择由作用域插槽使用。在模板中编写作用域插槽以输出接收到的原始 VNode 时是否有任何问题?

【问题讨论】:

是的,这是一个有趣的想法,听起来像是要做的事情。该示例程序中的哪个组件做到了这一点?我明白了,TodoList、BaseInputText 和 TodoListItem。 伙计,我搞砸了; this is the correct link。它是第二个示例中的 vnode 组件。 我喜欢。我怀疑这对我有用。谢谢分享。 【参考方案1】:

您可以使用功能组件为模板的该部分呈现 vnode:

<some-component>
  <div slot-scope=" vnodes ">
    <vnodes :vnodes="vnodes"/>
  </div>
</some-component>
components: 
  Vnodes: 
    functional: true,
    render: (h, ctx) => ctx.props.vnodes
  

【讨论】:

以上是关于你可以在 Vue 模板中渲染 VNode 吗?的主要内容,如果未能解决你的问题,请参考以下文章

vue中渲染函数Render原理解析

Vue中render渲染函数详解

vue渲染过程解析-VDOM &DOM

Vue3 高级语法—— h函数jsx

VUE2.0 模板编译原理:解析器

VUE2.0 模板编译原理:解析器