tabs的pane是动态组件
父组件里这么调用子组件
====== 父组件 =======
<el-tabs v-model="curTab" type="border-card">
<el-tab-pane v-for="(item, index) in tabNames" :key="index" :label="item.label" :name="item.name" lazy>
<component :is="item.name" :detail="detail" :id="id" />
</el-tab-pane>
</el-tabs>
tabNames() {
return [
{ label: "详细资料", name: "BaseInfo" },
{ label: "操作记录", name: "RelativeHandle" }
];
},
====== 子组件 =======
在vue2和element ui里,子组件里监听rootTabs的名称变换,更新当前页面的内容,如下使用
inject: ["rootTabs"],
watch: {
"rootTabs.currentName"(val) {
if (val === "BaseInfo") {
this.initData();
}
}
},
vue3+element-plus里如何使用?
element-plus里没有rootTabs这个inject了,所以自己在父组件inject一个即可
参考
https://cn.vuejs.org/guide/components/provide-inject.html#inject
1、设置
app.config.unwrapInjectedRef = true
vue3.3不需要
2、父类里provide
3、子类里
可以解决