vuex 使用文档小结篇(3)
Getters 会暴露为store.getters 对象:
store.getters.doneTodos // [{id:1,text: '...',done:true}]
Getter 也可以接受其他getters 作为第二个参数:
getters: { doneTodosCount: (state,getters) => { return getters.doneTodos.length } } store.getters.doneTodosCount // -> 1
我们可很容易的在任何组件中使用
computed: { doneTodosCount() { return this.$store.getters.doneTodosCount } }
mapGetters 辅助函数
mapGetters 辅助函数仅仅是 store 中的getters 映射到局部计算属性。
import {mapGetter} form 'vuex' export default { computed: { // 使用对象展开运算符将 getters 混入 ...mapGetters([ ‘doneTodosCount', 'anotherGetter' ]) } }
如果你想讲一个getter 属性另取名字,使用对象性时
mapGetters({ // 映射 this.doneCount 为 store.getters.doneTodosCount doneCount: 'doneTodosCount' })
Mutations
更改Vuex 的store 中的状态的唯一方式就是提交 mutation Vuex 中的mutation
非常类似于事件,每个 mutation 都有一个字符串的 事件类型 和回调函数。这个回调函数就是我们实际进行状态更改的地方。并且他会接受 state 作为第一个参数。
const store = new Vue.Store({ state: { count: 1 }, mutations: { inctement (state) { state.count++ } } })
当触发一个类型为 increment 的 mutation 时,调用此函数。”要唤醒一个
mutation handler,你需要以相应的 type 调用 store.commit 方法
store.commit('increment')
提交载荷(Payload)