如何为组件的每个实例触发 vue 生命周期事件?

Posted

技术标签:

【中文标题】如何为组件的每个实例触发 vue 生命周期事件?【英文标题】:How to fire vue lifecycle-events for every instance of a component? 【发布时间】:2019-10-15 02:54:33 【问题描述】:

我有一个由同一个子组件的多个实例组成的 vue 组件。其中一些子组件仅在条件下显示。我的问题是,当 if 条件变为 false 时,被破坏的方法和 beforeDestroy 方法都只调用一次(对于要销毁的最后一个子组件),但不是每个已安装的子组件。有没有办法改变这种行为并实现为每个被销毁的实例调用destroy-method?

为了更好地理解,我创建了一个小提琴:当从“前提条件 1”切换到“前提条件 2”时,我希望“实例 1”和“实例 2”的销毁方法都会被触发。但控制台仅显示执行实例 2 的方法。 当切换回“前提条件 1”时,根本没有销毁事件冒泡,但我希望它会被调用,例如 3。

Here is the fiddle:
https://jsfiddle.net/5chq02zs/2/

我也尝试将“destroyed”更改为“beforeDestroy”或“deactivate”,但结果保持不变。谁能指出我正确的方向?谢谢。

【问题讨论】:

【参考方案1】:

key="id" 添加到元素中。


    <my-component v-if="picked == 'true'" id="1" :key="1">
      instance 1
    </my-component>
    <my-component v-if="picked == 'true'" id="2" :key="2">
      instance 2
    </my-component>
    <my-component v-if="picked == 'false'" id="3" :key="3">
      instance 3
    </my-component>

【讨论】:

真的吗?非常感谢,我已经用谷歌搜索了好几个小时...... 我也有过一天 ;-) 祝你好运!

以上是关于如何为组件的每个实例触发 vue 生命周期事件?的主要内容,如果未能解决你的问题,请参考以下文章

Vue组件的生命周期

vue生命周期11个钩子函数

vue生命周期详解

Vue生命周期,计算属性方法侦听器

Vue的钩子事件和程序话事件侦听

Vue的钩子事件和程序化侦听