首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >HMR与Vue和webpack的钩子

HMR与Vue和webpack的钩子
EN

Stack Overflow用户
提问于 2019-08-18 06:18:59
回答 2查看 409关注 0票数 1

当一些Vue组件更新为热模块替换时,是否有设置钩子的选项?

代码语言:javascript
运行
复制
[HMR] App is up to date.

现在我想调用一些方法。

EN

回答 2

Stack Overflow用户

发布于 2019-08-18 15:51:46

通过对webpack的搜索,我发现了两种方法:disposeremoveDisposeHandler

处置

添加一个处理程序,该处理程序在替换当前模块代码时执行。这应该用于删除您已声明或创建的任何持久资源。如果您希望将状态转移到更新后的模块,请将其添加到给定的data parameter中。此对象将在module.hot.data after更新时可用。

removeDisposeHandler

删除通过dispose或addDisposeHandler添加的处理程序。

所以我在created钩子中添加了dispose,在destroyed钩子中删除了它,如下所示:

代码语言:javascript
运行
复制
export default {
  methods: {
    callback(data) {
      console.log(data)
    },
  },
  created() {
    if (module.hot) {
      module.hot.dispose(this.callback)
    } 
  },
  destroyed() {
    if (module.hot) {
      module.hot.removeDisposeHandler(this.callback)
    }
  },
}

我已经在我的Vue CLI应用程序中测试了它,一切都运行得很好:它在这个模块发生更改时调用,而在另一个模块更改时不调用。

票数 1
EN

Stack Overflow用户

发布于 2019-08-19 19:35:56

@Javas,谢谢提示。我正在寻找的解决方案是:

代码语言:javascript
运行
复制
module.hot.addStatusHandler(status => {
    console.log('module hot status', status)
});

我把它放到了我的入口文件中,如果有任何组件被热重新加载,它就会在每次调用。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/57540337

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档