vue怎么把h()放到template中渲染出来?
Vue 提供了一个 h() 函数用于创建 vnodes:
import { h } from 'vue'const vnode = h(
'div', // type
{ id: 'foo', class: 'bar' }, // props
[
/* children */
]
)
回答:
没法直接用,只能写个组件去接收render
回答:
你可以想象成 document.createElement
,只不过 h
内部还会处理原生标签和 Vue 组件。
并且可以把属性,方法一类的做赋值。
最后就是可以递归生成 children 上的。
本质上 h
可以理解为生成一个 VNode
, document.createElement
是真实 DOM。
具体的源码可以上 github 上去看
具体的你可以当 slot 或者 component 来使用,可以参考 elementui 的 messageBox 组件。
已参与了 SegmentFault 思否社区 10 周年「问答」打卡 ,欢迎正在阅读的你也加入。
回答:
我用的是vue3.0 的setup语法糖
import {h, render} from 'vue'
const renderData = () => {
// 创建虚拟节点
const vNode = h(...)
// 创建外层容器,存放虚拟DOM vNode
const dom = document.createElement('div');
document.querySelector('.要放入的容器名')?.appendChild(dom);
// 调用render函数渲染到页面
render(vNode, dom);
}
onMounted(() => {
renderData()
})
可以实现在template中局部render渲染
回答:
也可以用动态组件来实现,例如
<template> <component :is="h('span', '测试')"/>
</template>
以上是 vue怎么把h()放到template中渲染出来? 的全部内容, 来源链接: utcz.com/p/932817.html