【发布时间】:2021-04-09 16:20:43
【问题描述】:
我正在尝试在 Vue 3 中创建一个类似于 question here 的 Tabs 组件。
<tabs>
<tab title="one">content</tab>
<tab title="two" v-if="show">content</tab> <!-- this fails -->
<tab :title="t" v-for="t in ['three', 'four']">{{t}}</tab> <!-- also fails -->
<tab title="five">content</tab>
</tabs>
不幸的是,当内部的Tabs 是动态的,即如果Tab 上有一个v-if 或者当Tabs 使用v-for 循环呈现时,建议的解决方案不起作用 - 它失败。
我在这里为它创建了一个 Codesandbox,因为它包含 .vue 文件:
https://codesandbox.io/s/sleepy-mountain-wg0bi?file=%2Fsrc%2FApp.vue
我试过像onBeforeMount 一样使用onBeforeUpdate,但这也不起作用。实际上,它确实插入了新标签,但 标签的顺序发生了变化。
最大的障碍似乎是在 Vue 3 中似乎无法从父级获取/设置 child 数据。(如 Vue 2.x 中的 $children)。有人建议使用this.$.subtree.children,但随后强烈建议不要使用(无论如何我尝试过并没有帮助我)。
谁能告诉我如何使Tabs 中的Tab 反应并更新v-if 等?
【问题讨论】:
标签: javascript vue.js vue-component vuejs3