javascript - 从同一组件的方法中调用 VueJS 生命周期 Hook

标签 javascript vue.js vuejs2 vue-router

我在“容器”组件中使用 VueJS 的 mounted Hook 来获取构建 View 的数据。当该容器被销毁时,我使用 beforeDestroydestroyed 生命周期 Hook 来“清理”组件。

这三个钩子(Hook)不会在路由更改为同一路由但参数不同时调用。建议的处理方法是监听 watch 中的 $route 变化,如下所示:

watch: {
  '$route' (to, from) {
    this.id = to.params.id
    this.getPageData()
  }
}

但是,我没有从 mountedbeforeDestroydestroyed 复制逻辑,而是希望做这样的事情:

watch: {
  '$route' (to, from) {

    // Manually run lifecycle clean-up hooks
    this.beforeDestroy()
    this.destroyed()

    // Update Id, and run mounted
    this.id = to.params.id
    this.mounted()
  }
}

不幸的是,钩子(Hook)似乎没有在 $vm 上公开。有没有一种我不知道的方法可以做到这一点?我错过了一些明显的东西吗?或者是否有更好/首选的方法?

最佳答案

您可以将每个生命周期 Hook 内的代码提取到一个组件方法中,然后在两个地方调用该方法。这是一个例子:

mounted: function() {
    this.__mounted();
},

methods: {
    __mounted() {
        //mounted code here
    }
},

watch: {
  '$route' (to, from) {
        this.__mounted();
  }
}

关于javascript - 从同一组件的方法中调用 VueJS 生命周期 Hook ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48172698/

相关文章:

javascript - 无法使用javascript设置box-shadow

javascript - 从v-link获取数据属性

typescript - vuejs 计算属性和模板调试有什么好办法吗?

vue.js - 将插槽从 Vue 2 迁移到 Vue 3

javascript - Vue中JS与SCSS共享变量

javascript - 在具有多个嵌套对象的对象中使用 Vue.set

javascript - 在 JavaScript 中检索 R 对象属性 - 第 2 部分

javascript - 在 css 中的选择器不显示在所有元素和 JQuery 错误之后

javascript - 在 eonasdan-datetimepicker 中覆盖禁用日期的样式

vue.js - 我如何使用 Vuelidate 来验证 <select> 输入