【问题标题】:why the Vue suggest use v-if not $destroy to destroy a component为什么 Vue 建议使用 v-if 而不是 $destroy 来销毁组件
【发布时间】:2020-10-09 08:45:23
【问题描述】:

为什么 Vue 建议使用 v-if 而不是 $destroy 来销毁组件。在 Vue 文档中是这样说的:

在正常使用情况下,您不必自己调用此方法。更喜欢使用 v-if 和 v-for 以数据驱动的方式控制子组件的生命周期。

来自https://vuejs.org/v2/api/index.html#vm-destroy

vm.$destroy() 用法:

彻底销毁一个虚拟机。清理它与其他现有的连接 vms,解绑所有指令,关闭所有事件监听器。

触发 beforeDestroy 和destroy 钩子。

在正常使用情况下,您不必自己调用此方法。 更喜欢在数据驱动中控制子组件的生命周期 时尚使用 v-if 和 v-for。

【问题讨论】:

    标签: vue.js


    【解决方案1】:

    您不应该手动销毁您的组件 - Vue 会处理这个问题。如果您尝试自己销毁它们 - 可能会使 Vue 感到困惑。

    V-IF 根据其参数销毁和重新创建组件。这个想法是,与其强制创建/销毁组件,不如在模板中以声明方式指定何时创建组件以及何时销毁组件。

    这是关于 declarativeimperative 的编程风格。

    【讨论】:

    • 不比较v-show和v-if。我想知道v-if="false"销毁一个组件用$destroy销毁一个组件差异。
    • 那么,vm 实例仍在内存中?只是不渲染 vm?我如何查看 vm 实例是否仍在内存中,只是不渲染?我在父组件中打印控制台到看到this.$children,我发现,v-if 和$destroy 都让this.$children 为空。
    • 对不起,我错了。 V-IF 实际上会破坏(并重新创建)组件。
    • 那么,它们是一样的吗?
    • 只有 50% - $destroy 会销毁组件,但如果参数为 TRUE,V-IF 会自动重新创建它。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-12-04
    • 1970-01-01
    • 2023-04-02
    • 2021-05-13
    • 2020-12-20
    • 1970-01-01
    相关资源
    最近更新 更多