gpt4 book ai didi

webpack-dev-server:如何使用 module.hot.data 保存状态?

转载 作者:行者123 更新时间:2023-12-04 11:02:21 26 4
gpt4 key购买 nike

我正在使用 webpack-dev-server 的 Hot Module Replacement (HMR)。在代码中,我有这个:

// index.js

// ...

window.enableFoo = false; // can set this to 'true' in DevTools console

if (module && module.hot) {
module.hot.accept((err) => {
console.error('HMR accept() error: ' + err);
});
module.hot.addStatusHandler(status => {
if (status === 'apply') {
console.log('HMR: update applied');
}
});
}

我想保留 window.enableFoo跨越 HMR 更新。但是,每次应用更新时, window.enableFoo回到代码中设置的原始值,即 true这里。

我读自 HMR's API doc我需要使用 module.hot.dispose()module.hot.data ,但我找不到有关如何执行此操作的示例,并且文档没有详细说明。有人可以帮助我吗?

( this post 类似,但是代码和 Angular 纠缠不清,不容易理解...另外, this thread 说“如果你想保持状态,使用dispose和module.hot.data,不要使用accept “?)

最佳答案

挖掘后,此代码有效。我想我最好把它贴在这里,以防有人也在寻找答案。

// index.js

// ...

window.enableFoo = false; // can set this to 'true' in DevTools console

if (module && module.hot) {
module.hot.accept((err) => {
console.error('HMR accept() error: ' + err);
});
module.hot.addStatusHandler(status => {
if (status === 'apply') {
console.log('HMR: update applied');
}
});

// added begin ----------------------------------
module.hot.addDisposeHandler(data => {
data.enableFoo = window.enableFoo;
});
if (module.hot.data) {
window.enableFoo = module.hot.data.enableFoo;
console.log('window.enableFoo ' + window.enableFoo);
}
// added end ----------------------------------
}

关于webpack-dev-server:如何使用 module.hot.data 保存状态?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58725966/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com