<component
:is="true ? 'component1' : 'component2'"
:demodata="demodata"
@demoEvent="demoEvent"
></component>
demoData可以只用于其中某一个组件,组件emit的方法可以都被监听到。
// 相当于用 v-if 和 v-else 切换两个组件
<component1
v-if="true"
@demoEvent="demoEvent"
></component1>
<component2
v-else
:demoData="demoData"
@demoEvent="demoEvent"
></component2>
如果想要切换组件时保存上次的操作痕迹,可以在组件外包裹keep-alive,但要注意,此时两个组件的name要正确命名(这是一个好习惯)。
<keep-alive>
<component
:is="true ? 'component1' : 'component2'"
:demodata="demodata"
@demoEvent="demoEvent"
></component>
</keep-alive>