element-plus里tabs点击如何更新内容?
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
provide() { return {
myTab: computed(() => this.curTab)
}
},
3、子类里
watch: { "myTab"(val) {
if (val === "BaseInfo") {
this.initData();
}
}
},
可以解决
以上是 element-plus里tabs点击如何更新内容? 的全部内容, 来源链接: utcz.com/p/933902.html