Getters 和 mapGetters - daniel-qa/Vue GitHub Wiki
Getters 和 mapGetters
this.$store.getters.doneTodos
直接拿到已完成的待辦清單。
- 1. getters 是什麼?
getters 是 Vuex store 中的「計算屬性(computed)」。
它讓你從 state 派生出新的資料,比如過濾列表、計算總數、格式化資料等。
定義在 store 裡,回傳值可以直接在元件中拿來用。
範例
const store = new Vuex.Store({
state: {
todos: [
{ id: 1, done: true },
{ id: 2, done: false }
]
},
getters: {
doneTodos(state) {
return state.todos.filter(todo => todo.done);
}
}
});
getters
Vuex store 裡用來定義「計算屬性」的區塊。
doneTodos(state)
這是定義的一個 getter 函式,名字叫 doneTodos,會收到 Vuex 的 state 當作參數。
return state.todos.filter(todo => todo.done)
從 state 裡的 todos 陣列中,篩選出 done 屬性為 true 的項目,也就是「完成的待辦事項」。
- 2. mapGetters 是什麼?
mapGetters 是 Vuex 提供的輔助函式,用來把 store 中的 getters 映射到元件的 computed 屬性。
這樣你可以直接在元件中用 this.doneTodos 讀取,無須手動寫 computed。
用法
import { mapGetters } from 'vuex';
export default {
computed: {
...mapGetters(['doneTodos'])
}
};