调试过程中发现组件的created钩子总是被重复触发,改过的数据马上被重新初始化了。
理论上,你在一个组件内的所有操作都不会引发组件实例本身的销毁
思路
- created触发一定要经过实例销毁的过程
- 实例不会因为更改销毁
- 重复触发的问题不是组件内部逻辑引起的
- 能在运行时导致实例销毁的过程
- v-if条件变为false
- 检查组件外部v-if
果然,组件v-if条件有过一次初始化并重新赋值的变更,破案。
解决
用v-show防止组件实例被销毁
More
Vue强制销毁重绘
<Components v-if="show"/>
forceRedraw () {
this.show = false
this.$nextTick(() => {
this.show = true
)
}