Vue created钩子被重复触发

4,218 阅读1分钟

调试过程中发现组件的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
    )
}