写在前面
晚上好,讲面试题呀。
Vuex的五个核心属性分别是 State、 Getter、Mutation 、Action、 Module
1、state
state 为单一状态树,在 state 中需要定义我们所需要管理的数组、对象、字符串等等, 只有在这里定义了,在 vue.js 的组件中才能获取你定义的这个对象的状态
2、getter
getter 有点类似 vue.js 的计算属性,当我们需要从 store 的 state 中派生出一些状态,那 么我们就需要使用 getter,getter 会接收 state 作为第一个参数,而且 getter 的返回值会根据 它的依赖被缓存起来,只有 getter 中的依赖值(state 中的某个需要派生状态的值)发生改变 的时候才会被重新计算
3、mutation
更改 store 中 state 状态的唯一方法就是提交 mutation,就很类似事件。每个 mutation 都有一个字符串类型的事件类型和一个回调函数,我们需要改变 state 的值就要在回调函数 中改变。我们要执行这个回调函数,那么我们需要执行一个相应的调用方法 store.commit
4、action
action 可以提交 mutation,在 action 中可以执行 store.commit,而且 action 中可以有任 何的异步操作。在页面中如果我们要嗲用这个 action,则需要执行 store.dispatch
5、module
module 其实只是解决了当 state 中很复杂臃肿的时候,module 可以将 store 分割成模 块,每个模块中拥有自己的 state、mutation、action 和 getter
写在最后
好好背诵,散会!