vuex中g(shù)etters的基本用法解讀
getters的基本用法解讀
一、getter 定義
Vuex允許我們?cè)趕tore中定義"getter" ,用于對(duì)state中存儲(chǔ)的數(shù)據(jù)進(jìn)行過(guò)濾操作。
就像vue生命周期中的computed一樣,getter的返回值 會(huì)根據(jù)它的依賴被緩存起來(lái),且只有當(dāng)它的依賴值發(fā)生了改變才會(huì)被重新計(jì)算
二、使用方法
1、通過(guò)屬性訪問(wèn)
Getter 接受 state 作為其第一個(gè)參數(shù):
example:現(xiàn)在需要獲取list:[1,2,3,4,5,6,7,8,9]中大于5的元素
const store = new Vuex.Store({ ? ?state:{ ? ? ? ?list: [1,2,3,4,5,6,7,8,9] ? ? ? ?} , ? ? getters: { ? ? ? ? getNumber: state => { ? ? ? ? ? ? retrun state.list.filter(item => item > 5) ? ? ? ? } ? ? } ?? })
在.vue中使用
computed:{ ? ? getNumber(){ ? ? ? ? return this.$store.getters.getNumber ? ? } }
2、通過(guò)方法訪問(wèn)
同樣的數(shù)組list 需要根據(jù)不同的條件返回不同的數(shù)據(jù)
通過(guò)讓 getter 返回一個(gè)函數(shù),來(lái)實(shí)現(xiàn)給 getter 傳參
const store = new Vuex.Store({ ? ?state:{ ? ? ? ?list: [1,2,3,4,5,6,7,8,9] ? ? ? ?} , ? ? getters: { ? ? ? ? getNumber: state => (index) => { ? ? ? ? ? ? return state.list.filter(item => item > index) ? ? ? ? } ? ? } ?? })
在.vue中使用
computed:{ ? ? getNumber(){ ? ? ? ? return this.$store.getters.getNumber(4) ? ? } }
3、依賴于已存在的getters
example: 獲取list中大于5的數(shù)字的個(gè)數(shù)
注意:如果getters返回的是一個(gè)方法,不能用這種方式
const store = new Vuex.Store({ ? ?state:{ ? ? ? ?list: [1,2,3,4,5,6,7,8,9] ? ? ? ?} , ? ? getters: { ? ? ? ? getNumber: state => { ? ? ? ? ? ? return state.list.filter(item => item > 6) ? ? ? ? }, ? ? ? ? getNumberLength: (state, getters) = > { ? ? ? ? ? ? return getters.getNumber.length ? ? ? ? } ? ? } ?? })
三、mapGetters輔助函數(shù)
mapGetters 輔助函數(shù)僅僅是將 store 中的 getter 映射到局部計(jì)算屬性:
import { mapGetters } from 'vuex' export default { ? // ... ? computed: { ? // 使用對(duì)象展開(kāi)運(yùn)算符將 getter 混入 computed 對(duì)象中 ? ? ...mapGetters([ ? ? ? 'doneTodosCount', ? ? ? 'anotherGetter', ? ? ? // ... ? ? ]) ? } }
如果你想將一個(gè) getter 屬性另取一個(gè)名字,使用對(duì)象形式:
import { mapGetters } from 'vuex' export default { ? // ... ? computed: { ? ? ...mapGetters({ ? ? // 把 `this.doneCount` 映射為 `this.$store.getters.doneTodosCount` ? ? doneCount: 'doneTodosCount' ? ? }) ? } }
四、getters注意事項(xiàng)
1、data中定義的屬性名稱不能和computed中定義的getter名稱相同,否則會(huì)報(bào)錯(cuò)
2、vuex中state和getter中可以定義同名屬性,互不干擾
getters的兩種調(diào)用方法
getters和state用法相似,有點(diǎn)像vue中里面的data 和computed兩個(gè)之間的關(guān)系
使用:
state: { ?? ??? ?count:0, ?? ?},?? ? getters:{ ?? ??? ?countAdd(state){ ?? ??? ??? ?return state.count + 1 ?? ??? ?} ?? ?},
方法一
this.$store.getters.xxx?
xxx是getters里面的名稱
方法二
import { mapGetters } from 'vuex' ..... computed:{ ? ? ...mapGetters(['countAdd']) }
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
關(guān)于Element-UI可編輯表格的實(shí)現(xiàn)過(guò)程
這篇文章主要介紹了關(guān)于Element-UI可編輯表格的實(shí)現(xiàn)過(guò)程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-07-07Vue樹(shù)表格分頁(yè)的實(shí)現(xiàn)方法詳解
這篇文章主要介紹了Vue樹(shù)表格分頁(yè)的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-10-10vuex獲取state對(duì)象中值的所有方法小結(jié)(module中的state)
這篇文章主要介紹了vuex獲取state對(duì)象中值的所有方法小結(jié)(module中的state),具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04vue中el-table實(shí)現(xiàn)自動(dòng)吸頂效果(支持fixed)
本文主要介紹了vue中el-table實(shí)現(xiàn)自動(dòng)吸頂效果,文中通過(guò)示例代碼介紹的非常詳細(xì),具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2021-09-09vue cli 3.0通用打包配置代碼,不分一二級(jí)目錄
這篇文章主要介紹了vue cli 3.0通用打包配置代碼,不分一二級(jí)目錄,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-09-09詳解vue 動(dòng)態(tài)加載并注冊(cè)組件且通過(guò) render動(dòng)態(tài)創(chuàng)建該組件
這篇文章主要介紹了vue 動(dòng)態(tài)加載并注冊(cè)組件且通過(guò) render動(dòng)態(tài)創(chuàng)建該組件,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2019-05-05vue阻止重復(fù)請(qǐng)求實(shí)現(xiàn)示例詳解
這篇文章主要為大家介紹了vue阻止重復(fù)請(qǐng)求實(shí)現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-01-01