我已经设置了vuex模块的热重载和动态加载。
store.js文件-热更新部分
if (module.hot) {
// accept actions and mutations as hot modulesLoader
module.hot.accept([
'./store/modules/index.js',
'./store/helpers/global-actions',
'./store/helpers/global-mutations',
...modulePaths,
// './store/helpers/global-actions',
], () => {
let newModules = require('./store/modules').modules
store.hotUpdate({
actions: require('./store/helpers/global-actions'),
mutations: require('./store/helpers/global-mutations'),
modules: newModules,
})
})
}
modules / index.js文件
const requireModule = require.context('.', true, /index.js$/)
const modules = {}
const modulePaths = []
requireModule.keys().forEach(fileName => {
if (fileName === './index.js') {
modulePaths.push(fileName.replace('./', './store/modules/'))
return
} else {
let moduleName = fileName.match(/(?<=\/)\w*(?=\/)/g)[0]
modulePaths.push(fileName.replace('./', './store/modules/'))
modules[moduleName] =
{
namespaced: false,
...requireModule(fileName),
}
}
})
export {modulePaths, modules}
基本上,此代码的作用是动态加载具有index.js文件作为模块的文件夹(模块名称为foldername)。
如果我更新模块动作或吸气剂或突变,那么一切都会按预期进行,所以当两个模块中的任何一个更新时,我都会添加新的动作来存储和变异。
我唯一无法工作的是在更新时更改模块状态。因此,如果我更改模块状态,则不会得到反映。这是正常行为吗?还是我做错了什么?