1.方法一:使用setup语法糖,is必须使用组件实例,不可以使用字符串
<script setup>
import HelloWorld from './components/HelloWorld.vue'
import HelloWorld2 from './components/HelloWorld2.vue'
import {reactive, ref, shallowRef} from 'vue'
const tabComponent = shallowRef(HelloWorld)
const changeHandle = () => {
tabComponent.value = tabComponent.value === HelloWorld ? HelloWorld2 : HelloWorld
console.log(tabComponent.value)
}
</script>
<template>
<header>
<div class="wrapper">
<component :is="tabComponent"></component>
<button @click="changeHandle">切换</button>
</div>
</header>
</template>
2.方法二:使用setup语法糖,is必须使用组件实例,不可以使用字符串
<script setup>
import HelloWorld from './components/HelloWorld.vue'
import HelloWorld2 from './components/HelloWorld2.vue'
import {ref} from 'vue'
const flag = ref(true)
</script>
<template>
<header>
<div class="wrapper">
<component :is="flag?HelloWorld:HelloWorld2"></component>
<button @click="flag=!flag">切换</button>
</div>
</header>
</template>
3.不使用setup语法糖的方式和vue2差不多,is可以是个字符串
<script>
import HelloWorld from './components/HelloWorld.vue'
import HelloWorld2 from './components/HelloWorld2.vue'
export default {
components:{
HelloWorld,
HelloWorld2
},
data(){
return{
tabComponent:"HelloWorld"
}
},
methods:{
changeHandle(){
this.tabComponent = this.tabComponent === "HelloWorld" ? "HelloWorld2" : "HelloWorld"
console.log(this.tabComponent)
}
}
}
</script>
<template>
<header>
<div class="wrapper">
<component :is="tabComponent"></component>
<button @click="changeHandle">切换</button>
</div>
</header>
</template>