似乎是一个简单的要求,当然我可以使用生命周期钩子维护自己的标志。另请参阅https://forum.vuejs.org/t/check-if-mounted-was- Called/88177/6了解类似问题。
但是,我更喜欢使用已经内置的东西。我确信,VueJs 在某处维护生命周期状态。
这是我的观察者,简化版:
@Watch('openId')
private onOpenIdChanged() {
this.submitSomething(); //But ONLY if it's mounted!
}
如何在组件的观察者中访问同一组件的生命周期状态,而不使用我自己的标志?
没有为此提供公共 API,因此唯一正确的答案是维护自己的标志。
组件实例上有一个私有属性
_isMounted
,Vue 在内部使用它(从版本 2.6.11 开始)。
要仅在组件安装后处理更改,您可以在安装的生命周期挂钩中使用 this.$watch 。方法如下:
mounted() {
this.$watch('openId', () => {
this.submitSomething();
});
}
我不知道是否有更好的方法,但这非常有效: