Vuex模块状态在热重载时不会更新

时间:2018-11-27 15:01:47

标签: javascript vue.js vuex vuex-modules

我已经设置了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)。

如果我更新模块动作或吸气剂或突变,那么一切都会按预期进行,所以当两个模块中的任何一个更新时,我都会添加新的动作来存储和变异。

我唯一无法工作的是在更新时更改模块状态。因此,如果我更改模块状态,则不会得到反映。这是正常行为吗?还是我做错了什么?

0 个答案:

没有答案