首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >用ViteJS React/SolidJS检测HMR事件

用ViteJS React/SolidJS检测HMR事件
EN

Stack Overflow用户
提问于 2022-05-25 22:40:12
回答 1查看 431关注 0票数 0

使用ViteJS启动器进行React / SolidJS,

在代码更改触发HMR重新加载之前,如何检测(使用某种js回调)?(做些清理工作)

要明确的是,我并不是在问如何使用HMR,而是问如何在这之前进行一些清理。

我试过使用window.onbeforeunload,但没有效果。

谢谢。

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2022-05-26 07:34:22

window.onbeforeunload无法工作,因为在HMR中,页面从未被重新加载。HMR的工作方式是用websocket接收的新模块对现有模块进行修补。

您可以使用HMR连接到更新管道。https://vitejs.dev/guide/api-hmr.html#hot-accept-cb

您可以在接受修补程序的模块中使用accept方法:

代码语言:javascript
复制
if (import.meta.hot) {
  import.meta.hot.accept((newModule) => {
    console.log(`Receving new module...`, newModule);
  });
}

也可以在主文件中添加事件侦听器:

代码语言:javascript
复制
if (import.meta.hot) {
  import.meta.hot.on('vite:beforeUpdate', () => {
    console.log('Running before update!!');
  });
}

或者,您可以使用服务工作人员监视网络事件。创建一个JavaScript文件,其内容监视获取事件:

代码语言:javascript
复制
// sw.js
self.addEventListener('fetch', function(event) {
  console.log(event);
});

并在您的主文件中注册服务人员:

代码语言:javascript
复制
navigator.serviceWorker.register('/sw.js');
票数 2
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/72384854

复制
相关文章

相似问题

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