vue3的动态组件

本文介绍了如何在Vue应用中使用动态组件和`:is`属性实现响应式切换不同组件,同时提及了组件卸载和保持状态的方法。通过`:is`值的变化控制HelloWorld和Demo组件的渲染,以及如何通过scriptsetup和template配合实现组件切换逻辑。
摘要由CSDN通过智能技术生成

动态组件可以根据响应式变量动态的渲染不同的组件,目前是通过Vue 的 元素和特殊的 is attribute 实现的:

<component :is="tabs[currentTab]"></component>

:is 的值可以是以下几种:

被注册的组件名
导入的组件对象
你也可以使用 is attribute 来创建一般的 HTML 元素。

当使用 来在多个组件间作切换时,被切换掉的组件会被卸载。我们可以通过 组件强制被切换掉的组件仍然保持“存活”的状态。

如下
app.vue

<script setup lang="ts">
import HelloWorld from './components/HelloWorld.vue'
import Demo from './components/Demo.vue'
import Child from './components/Child.vue';
import { provide, ref,reactive,shallowRef } from 'vue';
const title = ref("hello")
provide("title", title)

const current=shallowRef(Child)



</script>

<template>

  <div class="wrapper">

    <component :is="current" :title="123"></component>
    <label><input type="radio" v-model="current" :value="Child" /> A</label>
    <label><input type="radio" v-model="current" :value="HelloWorld" /> B</label>

  </div>

</template>

<style scoped></style>

通过点击radio改变current的值从而触发不同的组件渲染。
在这里插入图片描述

在这里插入图片描述

  • 3
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值