Vue3ts动态组件

动态组件

https://xiaoman.blog.csdn.net/article/details/122891279
image.png
引入组件的时候如果通过reactive包裹了这个组件,那么vue会给你报错,因为把组件渲染成一个响应式对象是没有意义的,浪费性能,所以我们可以通过showRef或者markRaw来把它包裹一下
特别注意:vue3中如果需要使用动态组件的话,:is = “这里必须是组件实例,不能是字符串”
传入组件的方式:
image.png

Vue 3中使用TypeScript创建动态组件有几种方式。下面是两种常用的方法: 1. 使用`<component>`元素:Vue中的`<component>`元素可以根据提供的组件名称动态渲染组件。在TypeScript中,您可以使用`import`语句导入组件,并将其作为动态组件的选项传递给`<component>`元素。 示例如下: ```typescript <template> <component :is="dynamicComponent"></component> </template> <script lang="ts"> import { defineComponent, ref } from 'vue'; import MyComponent1 from './MyComponent1.vue'; import MyComponent2 from './MyComponent2.vue'; export default defineComponent({ components: { MyComponent1, MyComponent2, }, setup() { const dynamicComponent = ref('MyComponent1'); return { dynamicComponent, }; }, }); </script> ``` 2. 使用动态引入:Vue 3与Webpack和ES模块的动态导入紧密集,这使得您可以异步地加载组件并将其作为动态组件进行渲染。 示例如下: ```typescript <template> <button @click="loadComponent">Load Component</button> <component v-if="loadedComponent" :is="loadedComponent"></component> </template> <script lang="ts"> import { defineComponent, ref } from 'vue'; export default defineComponent({ setup() { const loadedComponent = ref(null); const loadComponent = async () => { const { default: component } = await import('./MyComponent.vue'); loadedComponent.value = component; }; return { loadComponent, loadedComponent, }; }, }); </script> ``` 这些方法允许您在Vue 3中使用TypeScript创建动态组件。您可以根据自己的需求选择适合您项目的方法。希望对您有所帮助!
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值