欧美一区二区三区,国内熟女精品熟女A片视频小说,日本av网,小鲜肉男男GAY做受XXX网站

vue getter bug

林國瑞2年前9瀏覽0評論

Vue是一個受歡迎的JavaScript框架,它使用getter和setter來追蹤數據的變化。 在Vue中定義getter是定義一個計算而成的屬性的理想方法。 這些getter非常有用,特別是當我們需要渲染來自不同路由的數據時。

然而,雖然Vue的getter非常強大,但有時我們會遇到一些奇怪的行為,特別是在使用getter時出現奇怪的bug。

export default {
computed: {
filteredItems() {
return this.items.filter(item =>item.done === this.selected);
},
numOfItems() {
return this.filteredItems.length;
}
},
getters: {
getNumOfItems(state) {
return state.items.length;
},
getFilteredItems(state) {
return state.items.filter(item =>item.done === state.selected);
},
getNumOfFilteredItems(state, getters) {
return getters.getFilteredItems.length;
}
}
}

在這個代碼塊中,我們有三個getter:getNumOfItems,getFilteredItems和getNumOfFilteredItems。 getNumOfFilteredItems是根據getFilteredItems和getNumOfItems來計算的。

但是,當我們運行這個代碼塊時,我們會注意到getNumOfFilteredItems getter不起作用。 它返回0,而不是預期的奇數數字。

為什么會這樣呢? 原因是我們沒有在getNumOfFilteredItems中傳遞參數。 因此,filteredItems和numOfItems將始終保持默認值。

getters: {
getNumOfFilteredItems(state, getters) {
// missing () on the end of each getter
return getters.getFilteredItems().length; // notice () here
}
 }

為了解決問題,我們只需要像將filteredItems和numOfItems中的響應式對象一樣,通過加上括號來調用getter方法:

在Vue中,getter是一個非常有用的概念,但我們需要記住正確使用它們,以避免出現問題。