学习就是在不断的总结,我们今天说的就是汇总在vue中写jsx的方式。
版本
本文版本配置 vue: 2.7.2 vue-cli: ~4.5.18;本文代码github仓库地址
render函数
render函数和vue中的template是互斥的,template最终是要编译成virtual Dom的,但我们要知道render函数可以更直接构建virtual Dom; virtual Dom由树状的vnode构成,h函数可以构建vnode。
vue templates are compiled into virtual DOM render functions. vue also provides APIs that allow us to skip the template compilation step and directly author render functions
If both render and template are present in a component, render will take higher priority.
假如当render和template同时出现,这时候render会有更高的权限(是不是和vue2中说法不一致)。
其实更加直接说就是vue3 render函数
jsx/tsx
jsx类似于h函数,比较直接使用javascript来构建DOM,但我们要知道的是jsx语法需要去编译处理,有的脚手架可能有预先配置,有的没有。
在typescript下需要编写tsx
使用jsx的几种方式
使用js对象注册component
When not using a build step, a Vue component can be >defined as a plain JavaScript object containing >Vue-specific options:
vue组件也可以直接使用普通的js对象来注册
// 定义一个js文件,导出组件对象 // componentObject.js export default { data() { return { msg: 'hello' } }, created() { setTimeout(() => { this.msg = 'hello world' }, 1000); }, render() { return <h1>{this.msg}</h1> } }
<script> import componentObject from './../components/componentObject.js' export default { components: { jsxComponent } }; </script>
使用.vue文件
这里如果template和render函数如果同时指定的话,会用template覆盖掉render,显然是template优先级更高,跟文档上的render优先级更高不一样
// sfcJsx.vue <!-- <template> <div>test</div> </template> --> <script> export default { data() { return { msg: 'i am sfc jsx' } }, created() { setTimeout(() => { this.msg = 'i am sfc jsxxxx' }, 1000); }, render() { return <h1>{this.msg}</h1> } } </script>
vue2.7在.vue文件中结合compositionApi和jsx
目前在setup中return jsx会报错,目测是loader没有支持(有知道解决办法的老师傅也可以告诉我一下..),只能在setup使用compositionApi再加上render函数里写jsx
// sfcJsx.vue <script> import { ref } from 'vue'; export default { setup() { const count = ref(0); setTimeout(() => { count.value = 12 }, 1000); return { count } }, render(h) { return ( <h1>{this.count ? <span>11</span>: <span>22</span>}</h1> ) } } </script>
在vue中写jsx的方式已经讲解完毕,您学会了多少?
文章版权归作者所有,未经允许请勿转载,若此文章存在违规行为,您可以联系管理员删除。
转载请注明本文地址:https://www.ucloud.cn/yun/127986.html
摘要:进阶系列一之响应式原理及实现进阶系列二之插件原理及实现进阶系列三之函数原理及实现函数原理根据第一篇文章介绍的响应式原理,如下图所示。在初始化阶段,本质上发生在函数中,然后通过函数生成,根据生成。负责收集依赖,清除依赖和通知依赖。 (关注福利,关注本公众号回复[资料]领取优质前端视频,包括Vue、React、Node源码和实战、面试指导)showImg(https://segmentfa...
摘要:核心开发人员大神在开了个,用来征询社区对的建议。而且的工程师并没有因此止步,他们在文档中又告诉开发者,不仅仅要把写到中,也应该写到中。无论怎么使用自定义语法,也不应该影响这种好处,即使最终实现看起来有一些怪异。 React 核心开发人员 sebmarkbage 大神在 GitHub 开了个 issues,用来征询社区对 JSX 2.0 的建议。 showImg(https://segm...
阅读 498·2023-03-27 18:33
阅读 706·2023-03-26 17:27
阅读 606·2023-03-26 17:14
阅读 575·2023-03-17 21:13
阅读 498·2023-03-17 08:28
阅读 1752·2023-02-27 22:32
阅读 1259·2023-02-27 22:27
阅读 2065·2023-01-20 08:28