热重载

使用 webpack 的 Hot Module Replacement API,Vuex 支持在开发过程中热重载 mutation、module、action 和 getter。你也可以在 Browserify 中使用 browserify-hmr 插件。

对于 mutation 和模块,你需要使用 store.hotUpdate() 方法:

  1. // store.js
  2. import Vue from 'vue'
  3. import Vuex from 'vuex'
  4. import mutations from './mutations'
  5. import moduleA from './modules/a'
  6. Vue.use(Vuex)
  7. const state = { ... }
  8. const store = new Vuex.Store({
  9. state,
  10. mutations,
  11. modules: {
  12. a: moduleA
  13. }
  14. })
  15. if (module.hot) {
  16. // 使 action 和 mutation 成为可热重载模块
  17. module.hot.accept(['./mutations', './modules/a'], () => {
  18. // 获取更新后的模块
  19. // 因为 babel 6 的模块编译格式问题,这里需要加上 `.default`
  20. const newMutations = require('./mutations').default
  21. const newModuleA = require('./modules/a').default
  22. // 加载新模块
  23. store.hotUpdate({
  24. mutations: newMutations,
  25. modules: {
  26. a: newModuleA
  27. }
  28. })
  29. })
  30. }

参考热重载示例 counter-hot

原文: https://vuex.vuejs.org/zh/guide/hot-reload.html