Vuex 的 getters的第二参数
- getter 也可以接受其他的 getter 函数 作为第二个参数
getters: {
// ...
doneTodos: state => {//通过方法访问
return state.todos.filter(todo => todo.done) // -> 1
},
doneCount: (state, getters) => {//通过属性访问
return getters.doneTodos.length
}
}
store.getters.doneCount // -> 1
注意,getters 在通过属性访问时是作为 Vue 的响应式系统的一部分缓存其中的。
- 也可以通过让 getters 返回一个函数,来实现给 getter 传参。在你对 store 里的数组进行查询时非常有用。
getters: {
// 采用箭头函数的形式
getTodoById: (state) => (id) => {
return state.todos.find(todo => todo.id === id)
}
}
//实际写法
getTodoById:function (state) {
return function (id){
return state.todos.find(todo => todo.id === id)
}
}
//
store.getters.getTodoById(2) // -> { id: 2,... }
//调用方式:
let fn = this.$store.getters.getTodoById; // fn是一个函数
let arr = fn(2); // -> { id: 2,... }
- 注意,getter 在通过方法访问时,每次都会去进行调用,而不会缓存结果。