Vue中的h函数和render函数的区别
文章类型:Vue
发布者:hp
发布时间:2025-04-16
在Vue中,h 函数和 render 函数是用于手动控制组件渲染的核心 API,那么他们有什么不同呢?
1:作用上
h 函数(createVNode)=> 是 创建虚拟 DOM 节点(VNode)。接收参数并返回一个描述 DOM 结构的虚拟节点对象
render 函数=>是 组件渲染的入口函数,用于定义组件如何渲染到页面上。它必须返回一个 VNode(通过 h 创建)
2:定位上
h 函数(createVNode)=>工具函数,用于生成虚拟节点
render 函数=>组件的核心渲染逻辑,替代模板的作用
3:关系上
h 函数(createVNode)=>负责创建单个虚拟 DOM 节点
render 函数=>负责组织多个 h 函数的调用,生成完整的虚拟 DOM 树
1:h 函数
h('div', { class: 'header' }, [
h('h1', 'Title'),
h('button', { onClick: handleClick }, 'Click me')
])
2:render 函数
export default {
render() {
return h('div', { id: 'app' }, this.message);
},
data() {
return { message: 'Hello Vue!' };
}
}
1:h:用于创建虚拟节点,是构建渲染内容的“积木”。
2:render:定义组件如何渲染,通过调用 h 组装出完整的虚拟 DOM 树
3:render 函数是生成虚拟 DOM 的“过程”,而 h 函数是生成虚拟 DOM 的“工具”
(1)Vue3中的变化
1:h需要显示导入
import { h } from 'vue';
2:组合API中使用,在setup()中返回渲染函数
import { h, ref } from 'vue';
export default {
setup() {
const count = ref(0);
return () => h('div', count.value); // 返回渲染函数
}
}