日本综合一区二区|亚洲中文天堂综合|日韩欧美自拍一区|男女精品天堂一区|欧美自拍第6页亚洲成人精品一区|亚洲黄色天堂一区二区成人|超碰91偷拍第一页|日韩av夜夜嗨中文字幕|久久蜜综合视频官网|精美人妻一区二区三区

RELATEED CONSULTING
相關(guān)咨詢
選擇下列產(chǎn)品馬上在線溝通
服務(wù)時間:8:30-17:00
你可能遇到了下面的問題
關(guān)閉右側(cè)工具欄

新聞中心

這里有您想知道的互聯(lián)網(wǎng)營銷解決方案
程序員都知道的vuex的冷門小技巧,超好用

當(dāng)訪問某個數(shù)據(jù)項嵌套太深了,優(yōu)化一下訪問的方式

我相信每一個程序員都會使用vuex吧,首先我承認vuex真的超好用,尤其是在項目特別大的時候,代碼會看起來非常的簡潔,也方便維護,但是項目大了,vuex的公共數(shù)據(jù)的嵌套也會越來越深,在組件中使用的時候就會像下面這張圖一樣,我要一直點啊點,才能拿到最里面的數(shù)據(jù),項目大了點都要點老半天......

創(chuàng)新互聯(lián)公司服務(wù)項目包括磁縣網(wǎng)站建設(shè)、磁縣網(wǎng)站制作、磁縣網(wǎng)頁制作以及磁縣網(wǎng)絡(luò)營銷策劃等。多年來,我們專注于互聯(lián)網(wǎng)行業(yè),利用自身積累的技術(shù)優(yōu)勢、行業(yè)經(jīng)驗、深度合作伙伴關(guān)系等,向廣大中小型企業(yè)、政府機構(gòu)等提供互聯(lián)網(wǎng)行業(yè)的解決方案,磁縣網(wǎng)站推廣取得了明顯的社會效益與經(jīng)濟效益。目前,我們服務(wù)的客戶以成都為中心已經(jīng)輻射到磁縣省份的部分城市,未來相信會繼續(xù)擴大服務(wù)區(qū)域并繼續(xù)獲得客戶的支持與信任!

image.png

在我的不斷嘗試中,成功的發(fā)現(xiàn)了,vuex其實有一個輔助函數(shù)map可以解決這個問題,下面就把我總結(jié)到的語法分享給大家啦~希望可以幫到你

  • 輔助函數(shù)map作用:簡化使用state, getters, mutatioins, actions
### mapState的使用步驟
// 1. 導(dǎo)入輔助函數(shù)mapState,它是在vuex中定義的一個工具函數(shù)。
// es6 按需導(dǎo)入 import { mapState } from 'vuex'
import { mapState } from 'vuex'

computed: {
// 說明1:...對象 是把對象展開,合并到computed
// 說明2:mapState是一個函數(shù)
// ['數(shù)據(jù)項1', '數(shù)據(jù)項2']
...mapState(['xxx']),
...mapState({'新名字': 'xxx'})
}
復(fù)制代碼
 #### 使用
script:   this.xxx
模板: {{xxx}}
復(fù)制代碼

圖示:

image.png

原理

  1. mapState是輔助函數(shù),將vuex中的數(shù)據(jù)投射到組件內(nèi)部;
  2. computed:{ ...mapState() } 這里的...是對象的展開運算符,整體來看是對象的合并。

如果vuex中的數(shù)據(jù)與本組件內(nèi)的數(shù)據(jù)名相同,怎么辦呢?

輔助函數(shù)mapState對數(shù)據(jù)重命名

...mapState({'新名字': 'xxx'})

## Vuex-map函數(shù)用法匯總

image.png

使用全局state

  • 直接使用:this.$store.state.xxx;
  • map輔助函數(shù):
computed: { 
// 省略其他計算屬性
...mapState(['xxx']),
...mapState({'新名字': 'xxx'})
}
復(fù)制代碼

那如果是分模塊化呢?如何使用modules中的state?

圖示

image.png

  • 直接使用:this.$store.state.模塊名.xxx;
  • map輔助函數(shù):
computed: { 
...mapState('模塊名', ['xxx']),
...mapState('模塊名', {'新名字': 'xxx'})
}
復(fù)制代碼

使用全局getters

  • 直接使用:this.$store.getters.xxx
  • map輔助函數(shù):
computed: { 
...mapGetters(['xxx']),
...mapGetters({'新名字': 'xxx'})
}
復(fù)制代碼

使用modules中的getters

  • 直接使用:this.$store.getters.模塊名.xxx
  • map輔助函數(shù):
computed: { 
...mapGetters('模塊名', ['xxx']),
...mapGetters('模塊名',{'新名字': 'xxx'})
}
復(fù)制代碼

使用全局mutations

  • 直接使用:this.$store.commit('mutation名', 參數(shù))
  • map輔助函數(shù):
methods: { 
...mapMutations(['mutation名']),
...mapMutations({'新名字': 'mutation名'})
}
復(fù)制代碼

使用modules中的mutations(namespaced:true)

  • 直接使用:this.$store.commit('模塊名/mutation名', 參數(shù))
  • map輔助函數(shù):
methods: { 
...mapMutations('模塊名', ['xxx']),
...mapMutations('模塊名',{'新名字': 'xxx'})
}
復(fù)制代碼

使用全局actions

  • 直接使用:this.$store.dispatch('action名', 參數(shù))
  • map輔助函數(shù):
methods: { 
...mapActions(['actions名']),
...mapActions({'新名字': 'actions名'})
}
復(fù)制代碼

使用modules中的actions(namespaced:true)

  • 直接使用:this.$store.dispatch('模塊名/action名', 參數(shù))
  • map輔助函數(shù):
methods: { 
...mapActions('模塊名', ['xxx']),
...mapActions('模塊名',{'新名字': 'xxx'})
}
復(fù)制代碼
  • 如果namespaced為true,則需要額外去補充模塊名
  • 如果namespaced為false,則不需要額外補充模塊名

總結(jié)


文章名稱:程序員都知道的vuex的冷門小技巧,超好用
分享地址:http://www.dlmjj.cn/article/djcdopd.html