程序員應該知道的vuex冷門小技巧(超好用)
當訪問某個數(shù)據(jù)項嵌套太深了,優(yōu)化一下訪問的方式
- 我相信每一個程序員都會使用vuex吧,首先我承認vuex真的超好用,尤其是在項目特別大的時候,代碼會看起來非常的簡潔,也方便維護,但是項目大了,vuex的公共數(shù)據(jù)的嵌套也會越來越深,在組件中使用的時候就會像下面這張圖一樣,我要一直點啊點,才能拿到最里面的數(shù)據(jù),項目大了點都要點老半天......
在我的不斷嘗試中,成功的發(fā)現(xiàn)了,vuex其實有一個輔助函數(shù)map可以解決這個問題,下面就把我總結(jié)到的語法分享給大家啦~希望可以幫到你
- 輔助函數(shù)map作用:簡化使用state, getters, mutatioins, actions
mapState的使用步驟
// 1. 導入輔助函數(shù)mapState,它是在vuex中定義的一個工具函數(shù)。 // es6 按需導入 import { mapState } from 'vuex' import { mapState } from 'vuex' computed: { // 說明1: ...對象 是把對象展開,合并到computed // 說明2: mapState是一個函數(shù) // ['數(shù)據(jù)項1', '數(shù)據(jù)項2'] ...mapState(['xxx']), ...mapState({'新名字': 'xxx'}) }
使用
script: this.xxx 模板: {{xxx}}
圖示:
原理
- mapState是輔助函數(shù),將vuex中的數(shù)據(jù)投射到組件內(nèi)部;
- computed:{ ...mapState() } 這里的...是對象的展開運算符,整體來看是對象的合并。
如果vuex中的數(shù)據(jù)與本組件內(nèi)的數(shù)據(jù)名相同,怎么辦呢?
輔助函數(shù)mapState對數(shù)據(jù)重命名
...mapState({'新名字': 'xxx'})
## Vuex-map函數(shù)用法匯總
使用全局state
- 直接使用: this.$store.state.xxx;
- map輔助函數(shù):
computed: { // 省略其他計算屬性 ...mapState(['xxx']), ...mapState({'新名字': 'xxx'}) }
那如果是分模塊化呢?如何使用modules中的state?
圖示
- 直接使用:
this.$store.state.模塊名.xxx;
- map輔助函數(shù):
computed: { ...mapState('模塊名', ['xxx']), ...mapState('模塊名', {'新名字': 'xxx'}) }
使用全局getters
- 直接使用:
this.$store.getters.xxx
- map輔助函數(shù):
computed: { ...mapGetters(['xxx']), ...mapGetters({'新名字': 'xxx'}) }
使用modules中的getters
- 直接使用:
this.$store.getters.模塊名.xxx
- map輔助函數(shù):
computed: { ...mapGetters('模塊名', ['xxx']), ...mapGetters('模塊名',{'新名字': 'xxx'}) }
使用全局mutations
- 直接使用:
this.$store.commit('mutation名', 參數(shù))
- map輔助函數(shù):
methods: { ...mapMutations(['mutation名']), ...mapMutations({'新名字': 'mutation名'}) }
使用modules中的mutations(namespaced:true)
- 直接使用:
this.$store.commit('模塊名/mutation名', 參數(shù))
- map輔助函數(shù):
methods: { ...mapMutations('模塊名', ['xxx']), ...mapMutations('模塊名',{'新名字': 'xxx'}) }
使用全局actions
- 直接使用:
this.$store.dispatch('action名', 參數(shù))
- map輔助函數(shù):
methods: { ...mapActions(['actions名']), ...mapActions({'新名字': 'actions名'}) }
使用modules中的actions(namespaced:true)
- 直接使用:
this.$store.dispatch('模塊名/action名', 參數(shù))
- map輔助函數(shù):
methods: { ...mapActions('模塊名', ['xxx']), ...mapActions('模塊名',{'新名字': 'xxx'}) }
- 如果namespaced為true,則需要額外去補充模塊名
- 如果namespaced為false,則不需要額外補充模塊名
總結(jié)
到此這篇關于vuex冷門小技巧的文章就介紹到這了,更多相關vuex冷門小技巧內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關文章希望大家以后多多支持腳本之家!
相關文章
elmentUI組件中el-date-picker限制時間范圍精確到小時的方法
現(xiàn)在需要做一個時間選擇器,可以根據(jù)小時(同時選天和小時)和天 和月,節(jié)假日等類型控制日歷的選擇樣式,下面這篇文章主要給大家介紹了關于elmentUI組件中el-date-picker限制時間范圍精確到小時的相關資料,需要的朋友可以參考下2023-04-04Vue Element-UI中el-table實現(xiàn)單選的示例代碼
在element-ui中是為我們準備好了可直接使用的單選與多選屬性的,本文主要介紹了Vue Element-UI中el-table實現(xiàn)單選的示例代碼,具有一定的參考價值,感興趣的可以了解一下2023-12-12Vue項目中使用better-scroll實現(xiàn)一個輪播圖自動播放功能
better-scroll是一個非常非常強大的第三方庫 在移動端利用這個庫 不僅可以實現(xiàn)一個非常類似原生ScrollView的效果 也可以實現(xiàn)一個輪播圖的效果。這篇文章主要介紹了Vue項目中使用better-scroll實現(xiàn)一個輪播圖,需要的朋友可以參考下2018-12-12