【问题标题】:this.$destroy vs v-if vue js with pagesthis.$destroy vs v-if 带有页面的 vue js
【发布时间】:2021-05-13 23:03:37
【问题描述】:

我有一个包含许多项目的菜单。在项目单击上,我创建了一个新的 Vue 元素(使用 Vuex 商店)。问题是:

关闭女巫在 vue 实例之外我必须调用 this.$destroy 或 v-if="false" 根元素。

<template> 
   <div v-if="closeVar">
     ....
   </div> 
</template>
<script>
 export default {
   ...,
   data() {
      return {
          closeVar: true
      };
   },
   methods: {
      onWindowsClose() {
          this.$destroy() OR this.closeVar = false; ????
      }
   },
   created() {
       window[id + 'onWindowsClose'] = this.onWindowsClose;
   }
}
</script>

【问题讨论】:

    标签: javascript vue.js destroy


    【解决方案1】:

    来自$destroy 文档:

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

    所以文档的答案是首选使用v-if。此外,您应该将 v-if 放在父组件的标签上,而不是根元素上的组件内:

    父母

    <child v-if="closeVar"></child>
    

    否则,您只会删除孩子的内容,而不是整个组件。

    不同之处在于,例如,如果您使用内容重新填充该特定实例,则不会再次调用子级的 created 挂钩(这是可能的,因为组件不会被销毁。)

    【讨论】:

    • 这不是一个组件,它是根元素 (new Vue{..., store}).$mount('.app')。如果我使用 v-if 方式商店将被销毁?
    • 它在一个 .vue 文件中,所以它显然是一个组件,即使是根组件。也许你真的在问一个不同的问题:“如何销毁一个 Vue 应用实例”,这与销毁根组件不同。显示的代码均与该问题无关
    猜你喜欢
    • 1970-01-01
    • 2021-10-04
    • 2019-10-07
    • 1970-01-01
    • 1970-01-01
    • 2021-12-18
    • 2021-03-09
    • 2022-01-23
    • 2019-01-03
    相关资源
    最近更新 更多