请问老师,setup组件中如何使用render函数呢

来源:2-2 安装 Typescript 文档

有没有没被占用的昵称

2022-03-18

老师我知道在setup方法可以返回一个h函数来渲染模板

但是在setup组件中不允许直接return,如果在setup组件中想使用h函数应该怎么做呢

写回答

1回答

张轩

2022-03-19

同学你好 好问题 假如不使用 tsx 的话,我一般都会用一个 “中间组件” 的技术来实现对应的功能。我会创建这样一个组件:

//renderVnode.ts
import { defineComponent, h, isVNode } from 'vue'

const RenderVnode = defineComponent({
    props: {
    vNode: {
        type: [Object, String],
        required: true
    }
},
render () {
    if (isVNode(this.vNode)) {
        return this.vNode
    } else {
        return h('div', this.vNode as any)
    }
}
})

export default RenderVnode

// 想用 vnode 的地方可以直接用这个组件的属性传递
text 这里可以是一个 h 返回的节点
<render-vnode :vNode="text"></render-vnode>
// 亲测好用,我在工作中就是这么用的


0
1
有没有没被占用的昵称
非常感谢!
2022-03-19
共1条回复

Vue3 + TS 仿知乎专栏企业级项目

带你完成前后端分离复杂项目,率先掌握 vue3 造轮子技能

3142 学习 · 2313 问题

查看课程