- state:用于管理公共数据
- getters:用于管理公共的计算属性
- mutations:用于管理修改 state 的方法
- actions:用于管理异步方法
- modules:对仓库进行模块化管理
在组件中使用state中的数据:$store.state
mutations 中的所有方法,第一个参数都是 state 对象,第二个参数 payload 可以用来接收外部传递的数据; //在mutations中的方法名最好大写;
在组件中调用mutations的方法:this.$store.commit('方法名');
在组件中调用actions中的异步方法:this.$store.dispatch('方法名')
在组件中如果想获取actions请求回来的数据有两种方法:
1、将 actions 请求到的数据直接作为函数的返回值,组件中调用该函数时接收返回的数据。
2、将 actions 请求到的数据保存到 state 中,组件直接获取 state 的数据。//需要通过actions调用mutations 的方法并将新数据传给 mutations,然后在 mutations 中修改 state。
例如:
//注意:actions方法中的第一个参数都是context仓库,第二个参数可以接收外部传递的数据。
Vuex的模块化管理
在store文件夹中的index.js文件里引入模块仓库,并引入到index.js文件的modules中;如果要组件中使用模块仓库的数据则需要用到辅助函数。
在一个组件中使用多个模块仓库时则需要使用辅助函数重命名;
在组件的methods中,使用的是模块仓库的mutations和actions;在组件computed中,使用的是模块仓库的state和getters;一般组件使用仓库的数据通过computed。