vuex中的四個(gè)map方法的使用小結(jié)
vuex里面有四個(gè)map方法,他們分別可以針對(duì)不同的元素進(jìn)行不同的代碼生成
這四個(gè)map方法都是異曲同工,明白了一個(gè)基本上都明白了
1 編寫(xiě)案例
現(xiàn)在想要展示一段文本,其中里面兩個(gè)參數(shù)要存在store的state里面,那么每次獲取都要通過(guò)這么一大串代碼獲取,及其復(fù)雜且不美觀,vue的風(fēng)格指南就說(shuō)過(guò)插值語(yǔ)法不要寫(xiě)的這么復(fù)雜
2 計(jì)算屬性簡(jiǎn)化
當(dāng)然我們可以可以通過(guò)計(jì)算屬性簡(jiǎn)化,但是計(jì)算屬性只支持在當(dāng)前組件使用
但是可以觀察發(fā)現(xiàn),其實(shí)都是讀取的store.state.x里面的數(shù)據(jù),代碼都是一樣的,所以是否有辦法生成或者封裝這些冗余的代碼呢?
vuex的設(shè)計(jì)者當(dāng)然也考慮到了這個(gè)問(wèn)題,下面我們就去使用生成相關(guān)代碼的函數(shù)
3 mapState簡(jiǎn)化
想要使用生成相關(guān)代碼的函數(shù),需要先引入vuex,從vuex身上引入mapState
// 引入vuex身上的mapState import {mapState} from 'vuex'
mapState是一個(gè)對(duì)象,里面有很多組key,value,它有兩種寫(xiě)法
寫(xiě)法1(對(duì)象寫(xiě)法)
// 借助mapState生成計(jì)算屬性,從state中讀取數(shù)據(jù)(對(duì)象寫(xiě)法) ...mapState({sum:'sum',address:'address',info:'info'}),
寫(xiě)法2(數(shù)組寫(xiě)法)
除了對(duì)象寫(xiě)法,還有更為精簡(jiǎn)的數(shù)組寫(xiě)法
注意,此時(shí)一定不能直接寫(xiě)成對(duì)象簡(jiǎn)寫(xiě)形式,應(yīng)該放到一個(gè)數(shù)組里面再進(jìn)行簡(jiǎn)寫(xiě)形式
每一個(gè)key都有兩個(gè)用途,一個(gè)用途是生成的計(jì)算屬性名稱(chēng),另外一個(gè)是從state里面讀取的屬性名稱(chēng)
// 借助mapState生成計(jì)算屬性,從state中讀取數(shù)據(jù)(數(shù)組寫(xiě)法) ...mapState(['sum','address','info']),
4 mapGetters簡(jiǎn)化
mapGetters和mapState的寫(xiě)法是一樣的,首先需要從vuex里面引用出來(lái)
寫(xiě)法也是分為對(duì)象和數(shù)組寫(xiě)法,和mapState如出一轍
寫(xiě)法1(對(duì)象寫(xiě)法)
// 借助mapGetters生成計(jì)算屬性,從getters中讀取數(shù)據(jù)(對(duì)象寫(xiě)法) ...mapGetters({bigSum:'bigSum'}),
寫(xiě)法2(數(shù)組寫(xiě)法)
// 借助mapGetters生成計(jì)算屬性,從getters中讀取數(shù)據(jù)(數(shù)組寫(xiě)法) ...mapGetters(['bigSum']),
到此mapState和mapState對(duì)于計(jì)算屬性的優(yōu)化就結(jié)束了,下面是mapActions和mapMutations優(yōu)化methods
注意觀察,這些代碼也都是很相似的,我們也是可以進(jìn)行優(yōu)化的
5 mapMutations
首先也是引入vuex中的mapMutations
寫(xiě)法1(對(duì)象寫(xiě)法)
// 借助mapMutations生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用commit去聯(lián)系mutations(對(duì)象寫(xiě)法) ...mapMutations({increment:'INCREMENT',decrement:'DECREMENT'})
這時(shí)候發(fā)現(xiàn)問(wèn)題
這時(shí)候我們需要給事件綁定參數(shù)
這樣就解決了
寫(xiě)法2(數(shù)組寫(xiě)法)
// 借助mapMutations生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用commit去聯(lián)系mutations(數(shù)組寫(xiě)法) ...mapMutations(['INCREMENT','DECREMENT']),
6 mapActions
首先還是引入vuex中的 mapActions
// 引入vuex身上的mapState和mapGetters和mapMutations和mapActions import {mapState,mapGetters,mapMutations,mapActions} from 'vuex'
寫(xiě)法1(對(duì)象寫(xiě)法)
// 借助mapActions生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用dispatch去聯(lián)系actions(對(duì)象寫(xiě)法) ...mapActions({incrementOdd:'incrementOdd',incrementOdd:'incrementOdd'}),
寫(xiě)法2(數(shù)組寫(xiě)法)
// 借助mapActions生成對(duì)應(yīng)的方法,方法中會(huì)調(diào)用dispatch去聯(lián)系actions(數(shù)組寫(xiě)法) ...mapActions(['incrementOdd','incrementWait']),
7 總結(jié)
1 mapState方法: 用于幫助我們映射state
中的數(shù)據(jù)為計(jì)算屬性
computed: { //借助mapState生成計(jì)算屬性:sum、school、subject(對(duì)象寫(xiě)法) ...mapState({sum:'sum',school:'school',subject:'subject'}), //借助mapState生成計(jì)算屬性:sum、school、subject(數(shù)組寫(xiě)法) ...mapState(['sum','school','subject']), },
2 mapGetters方法: 用于幫助我們映射getters
中的數(shù)據(jù)為計(jì)算屬性
computed: { //借助mapGetters生成計(jì)算屬性:bigSum(對(duì)象寫(xiě)法) ...mapGetters({bigSum:'bigSum'}), //借助mapGetters生成計(jì)算屬性:bigSum(數(shù)組寫(xiě)法) ...mapGetters(['bigSum']) },
3 mapActions方法: 用于幫助我們生成與actions
對(duì)話(huà)的方法,即:包含$store.dispatch(xxx)
的函數(shù)
methods:{ //靠mapActions生成:incrementOdd、incrementWait(對(duì)象形式) ...mapActions({incrementOdd:'jiaOdd',incrementWait:'jiaWait'}) //靠mapActions生成:incrementOdd、incrementWait(數(shù)組形式) ...mapActions(['jiaOdd','jiaWait']) }
4 mapMutations方法: 用于幫助我們生成與mutations
對(duì)話(huà)的方法,即:包含$store.commit(xxx)
的函數(shù)
methods:{ //靠mapActions生成:increment、decrement(對(duì)象形式) ...mapMutations({increment:'JIA',decrement:'JIAN'}), //靠mapMutations生成:JIA、JIAN(對(duì)象形式) ...mapMutations(['JIA','JIAN']), }
備注:mapActions與mapMutations使用時(shí),若需要傳遞參數(shù)需要:在模板中綁定事件時(shí)傳遞好參數(shù),否則參數(shù)是事件對(duì)象。
到此這篇關(guān)于vuex中的四個(gè)map方法的使用小結(jié)的文章就介紹到這了,更多相關(guān)vuex map使用內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
ElementUI?el-table?樹(shù)形數(shù)據(jù)的懶加載的實(shí)現(xiàn)
當(dāng)面對(duì)大量數(shù)據(jù)時(shí),一次性加載所有數(shù)據(jù)可能會(huì)導(dǎo)致性能問(wèn)題,我們可以實(shí)現(xiàn)樹(shù)形數(shù)據(jù)的懶加載,本文主要介紹了ElementUI?el-table?樹(shù)形數(shù)據(jù)的懶加載,感興趣的可以了解一下2024-06-06詳解vue-cli項(xiàng)目在IE瀏覽器打開(kāi)報(bào)錯(cuò)解決方法
這篇文章主要介紹了詳解vue-cli項(xiàng)目在IE瀏覽器打開(kāi)報(bào)錯(cuò)解決方法,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2020-12-12解決vue中reader.onload讀取文件的異步問(wèn)題
這篇文章主要介紹了解決vue中reader.onload讀取文件的異步問(wèn)題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-10-10Vue中禁止編輯的常見(jiàn)方法(以禁止編輯輸入框?yàn)槔?
在我們開(kāi)發(fā)項(xiàng)目的時(shí)候,有時(shí)候我們不希望用戶(hù)對(duì)我們的頁(yè)面進(jìn)行操作,尤其是輸入框之類(lèi)的,這篇文章主要給大家介紹了Vue中禁止編輯的常見(jiàn)方法,文中介紹的方法主要以禁止編輯輸入框?yàn)槔?需要的朋友可以參考下2024-02-02vue項(xiàng)目中企業(yè)微信使用js-sdk時(shí)config和agentConfig配置方式詳解
這篇文章主要介紹了vue項(xiàng)目中企業(yè)微信使用js-sdk時(shí)config和agentConfig配置,本文通過(guò)實(shí)例代碼給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2020-12-12