自拍偷在线精品自拍偷,亚洲欧美中文日韩v在线观看不卡

程序員都知道的vuex的冷門小技巧,超好用

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

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

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

image.png

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

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

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

圖示:

image.png

原理

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

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

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

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

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

image.png

使用全局state

  • 直接使用:this.$store.state.xxx;
  • map輔助函數(shù):
computed: { 
// 省略其他計(jì)算屬性
...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,則需要額外去補(bǔ)充模塊名
  • 如果namespaced為false,則不需要額外補(bǔ)充模塊名

總結(jié)

責(zé)任編輯:龐桂玉 來(lái)源: WEB前端開(kāi)發(fā)社區(qū)
相關(guān)推薦

2018-11-14 10:00:07

程序員開(kāi)發(fā)技巧Git

2015-11-19 09:36:13

前端程序員jQuery

2018-05-08 15:30:46

程序員代碼框架

2016-12-20 18:44:22

2022-12-07 10:21:19

谷歌搜索技巧

2013-06-03 11:24:45

程序調(diào)試Java

2022-03-09 09:56:27

插件開(kāi)發(fā)效率

2014-10-22 10:54:14

程序員

2021-04-08 09:42:17

程序員技能開(kāi)發(fā)者

2015-11-05 09:19:12

程序員jQuery技巧

2025-04-01 00:26:46

參數(shù)技巧arglist

2019-10-17 15:10:33

PHP程序員Linux

2023-03-28 23:08:18

Bash編碼Shell

2017-09-26 13:08:51

程序員開(kāi)發(fā)定律

2016-12-06 10:12:07

程序員開(kāi)會(huì)

2018-09-20 17:05:01

前端程序員JavaScript

2019-01-23 17:53:05

程序員技能溝通

2019-07-18 12:40:49

Java編程語(yǔ)言性能優(yōu)化

2016-12-27 10:29:38

程序IT周刊

2020-07-26 18:34:46

Python開(kāi)發(fā)工具
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)