在 vuex store 中有很多類似的狀態:
const state = {
count: 0,
count2: 1,
count3: 2
};
并且對于每個狀態都有一個相應的 getter:
const getters = {
getCount: (state) => state.count,
getCount2: (state) => state.count2,
getCount3: (state) => state.count3,
};
有沒有辦法將這 3 個轉換為一個動態 getter,它會接受密鑰并獲取相應的資料。
uj5u.com熱心網友回復:
您可以創建另一個 getter,并使用另一個函式來傳遞引數。
const getters = {
getCount: (state) => state.count,
getCount2: (state) => state.count2,
getCount3: (state) => state.count3,
// The param could be "count" || "count2"
getAllCount: (state) => (param) => state[param]
// and calling
this.$store.getters['getAllCount'](theParamKey)
};
uj5u.com熱心網友回復:
您有兩個選擇,首先,您可以按照此處的說明從 getter 回傳一個函式,或者,這在許多情況下更有意義,您可以更改狀態并回傳一個物件(或陣列):
const state = {
count: {
count1: 0,
count2: 1,
count3: 2,
}
};
const getters = {
getCount: (state) => state.count,
};
根據我的經驗,第二個選項通常是最好的,因為它對其他開發人員和維護更容易(從 getter 回傳函式非常違反直覺),并且因為它非常容易處理物件(或陣列),但肯定第一個選項也有它的用例。
uj5u.com熱心網友回復:
我們有一種方法可以將引數傳遞給 getters 函式,這是您的方法
const getters = {
getCount: (state) => (arg) => {
return state[arg]; // where arg can be count or count1 or count2
}
參考鏈接:https : //vuex.vuejs.org/guide/getters.html#method-style-access
轉載請註明出處,本文鏈接:https://www.uj5u.com/caozuo/346175.html
