认识h函数
vue推荐在绝大多数情况下使用模板来创建html,但是在一些特殊的场景,需要JavaScript的完全编程的能力,这个时候就可以使用渲染函数,比模板更接近编译器
vue在生成真实的DOM之前,会将所有的节点转换成VNode,而VNode组合在一起形成一颗树结构,就是虚拟DOM(VDOM)
template中的html最终也会使用渲染函数生成对应的VNode
可以使用JavaScript编写createVNode函数,生成对应的VNode
h()函数是一个用于创建vnode的一个函数
h()函数怎么使用?
h()函数接收三个参数
第一个参数:是标签的名称、组件、异步组件或者函数式组件
第二个参数:标签的属性,
第三参数:标签中的内容
注意:如果没有props,那么通常可以将children作为第二参数传入
如果产生歧义,可以将numm作为第二个参数传入,将children作为第三个参数传入
如果使用render函数的话,就不需要写template标签了
使用·h函数实现一个计数器
也可以使用setup替代data使用
也可以在setup中写render函数
接收的参数第一个是组件的情况
hellowrd.vue
app.vue
也可以传入插槽
app.vue
helloword.vue
再看jsx
如果要在项目中使用jsx,就需要添加对jsx的支持
jsx通过babel来进行转换,在vue中配置对应的插件即可
安装插件
npm install @vue/babel-plugin-jsx
在bable.config.js配置插件
module.exports = { presets: [ '@vue/cli-plugin-babel/preset' ], plugins:[ '@vue/babel-plugin-jsx' ] }
也可以使用组件的时候传入一个插槽
helloword.vue