- 資訊首頁(yè) > 開(kāi)發(fā)技術(shù) > web開(kāi)發(fā) > JavaScript >
- vuex中Getter的用法詳解
Vuex 允許我們在 store 中定義“getter”(可以認為是 store 的計算屬性)。就像計算屬性一樣,getter 的返回值會(huì )根據它的依賴(lài)被緩存起來(lái),且只有當它的依賴(lài)值發(fā)生了改變才會(huì )被重新計算。
以官網(wǎng)的例子來(lái)說(shuō)明,官網(wǎng)代碼如下:
在組件中使用以下代碼訪(fǎng)問(wèn):
this.$store.getters.doneTodosCount
getters中的訪(fǎng)問(wèn)器函數,默認會(huì )傳遞2個(gè)參數(state, getters),使用第一個(gè)參數state可以訪(fǎng)問(wèn)數據,使用getters參數可以訪(fǎng)問(wèn)訪(fǎng)問(wèn)器中的其它訪(fǎng)問(wèn)器函數。大部分情況下只需要使用第一個(gè)參數,定義訪(fǎng)問(wèn)器函數就只寫(xiě)第一個(gè)參數即可,就像上面的例子。訪(fǎng)問(wèn)這些訪(fǎng)問(wèn)器屬性時(shí),就像是組件中的計算屬性一樣調用,而不是像函數調用一樣。
這是有第二個(gè)參數getters時(shí)的使用例子,在組件中直接使用下面的代碼調用,就像調用計算屬性一樣。第2個(gè)參數系統會(huì )默認傳遞。
this.$store.getters.doneTodos
通過(guò)讓 getter 返回一個(gè)函數,來(lái)實(shí)現給 getter 傳參。因此它的主要作用是傳遞參數。
在組件中直接訪(fǎng)問(wèn) this.$store.getters.getTodoById時(shí),返回的是一個(gè)函數。然后再進(jìn)行函數調用的方式傳遞參數進(jìn)去,就得到了函數的結果。
在組件的計算屬性中,直接使用以下方式,可以很方便的引用getter屬性,然后就像調用普通的計算屬性一樣的使用。
如果你想將一個(gè) getter 屬性另取一個(gè)名字,使用對象形式:
這些知識點(diǎn),光看文檔有時(shí)候會(huì )很難理解,手動(dòng)實(shí)踐一下,會(huì )很容易的消化理解。
getters: { getProductByid: (state) => (id) => { return state.productList.find(item => item.id === id); } }
在使用了namespace的情況下調用:
this.$store.getters['yournamespace/getProductByid'](id);
在未使用namespace的情況下調用:
this.$store.getters.getProductByid(id);
到此這篇關(guān)于vuex中Getter用法的文章就介紹到這了,更多相關(guān)Vuex Getter用法內容請搜索腳本之家以前的文章或繼續瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
免責聲明:本站發(fā)布的內容(圖片、視頻和文字)以原創(chuàng )、來(lái)自本網(wǎng)站內容采集于網(wǎng)絡(luò )互聯(lián)網(wǎng)轉載等其它媒體和分享為主,內容觀(guān)點(diǎn)不代表本網(wǎng)站立場(chǎng),如侵犯了原作者的版權,請告知一經(jīng)查實(shí),將立刻刪除涉嫌侵權內容,聯(lián)系我們QQ:712375056,同時(shí)歡迎投稿傳遞力量。
Copyright ? 2009-2022 56dr.com. All Rights Reserved. 特網(wǎng)科技 特網(wǎng)云 版權所有 特網(wǎng)科技 粵ICP備16109289號
域名注冊服務(wù)機構:阿里云計算有限公司(萬(wàn)網(wǎng)) 域名服務(wù)機構:煙臺帝思普網(wǎng)絡(luò )科技有限公司(DNSPod) CDN服務(wù):阿里云計算有限公司 百度云 中國互聯(lián)網(wǎng)舉報中心 增值電信業(yè)務(wù)經(jīng)營(yíng)許可證B2
建議您使用Chrome、Firefox、Edge、IE10及以上版本和360等主流瀏覽器瀏覽本網(wǎng)站