经一场大梦,梦中见满眼山花如翡,如见故人,喜不自胜。
Module
- 由于使用单一状态树,应用的所有状态会集中到一个比较大的对象。当应用变得非常复杂时,store 对象就有可能变得相当臃肿。
- Vuex 允许我们将 store 分割成模块(module)。每个模块拥有自己的 state、mutation、action、getter。
分割模块
- 新建 modules 文件夹,创建子模块
子模块
- namespaced 设置为 true
1 | export default { |
- modules 下的 index.js 是模块出口总和
1 | import login from './login'; |
最上级模块
- 将模块引入
1 | import { createStore } from 'vuex'; |
在组件中使用
- 获取子模块 state
1 | <a>模块home的name: {{this.$store.state.home.name}}</a> |
- 调用子模块 modules 的方法
1 | this.$store.commit({ type: 'home/changeAgeHome', age: 'home-commit-change' }); |
- 调用子模块 actions 的方法
1 | this.$store.dispatch({ type: 'home/changeNameHomeAction', name: 'home-actions-change' }); |
- 调用子模块 getters 的方法
1 | this.$store.getters['home/getNameLengthHome'](12); |
辅助函数
1 | <template> |