vue3在jsx中使用component组件方式
作者:fly丶知秋
这篇文章主要介绍了vue3在jsx中使用component组件方式,具有很好的 参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
vue3在jsx使用component组件
component
组件不像其它的内置组件( tansition
、 transitionGroup
)
可以直接从 vue
中直接导出,所有要在 jsx
使用 component
就要使用 h
函数
使用vue内置组件
// xxx.jsx import { defineComponent, Transition } from 'vue'; export default defineComponent({ name: "v-test", setup(props, { attrs, slots }){ return () => <Transition><div>{ slots.default?.() }</div></Transition> } })
使用动态组件-component
// xxx.jsx import { defineComponent } from 'vue'; export default defineComponent({ name: "v-test", props:{ tag: { type: String, default: "div", } }, setup(props, { attrs, slots }){ return () => h(props.tag, {...attrs}, slots.default?.()) } })
vue3使用jsx报错React is not defined
项目场景
vue3+vite项目
问题描述
在vue3中使用jsx报错React is not defined
解决方案
此时还需要设置tsconfig.ts中配置"jsx": "preserve"属性。
方式一:
npm install @vitejs/plugin-vue-jsx -D // vite.config.js import vueJsx from '@vitejs/plugin-vue-jsx' export default { plugins: [ vueJsx({ // options are passed on to @vue/babel-plugin-jsx }) ] }
方式二:
在vite.config.vue中添加如下代码:
esbuild: { jsxFactory: 'h', jsxFragment: 'Fragment', jsxInject: "import { h } from 'vue';" },
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。