成人免费xxxxx在线视频软件_久久精品久久久_亚洲国产精品久久久_天天色天天色_亚洲人成一区_欧美一级欧美三级在线观看

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

開發 前端
在我的不斷嘗試中,成功的發現了,vuex其實有一個輔助函數map可以解決這個問題,下面就把我總結到的語法分享給大家啦~希望可以幫到你。

當訪問某個數據項嵌套太深了,優化一下訪問的方式

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

image.png

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

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

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

圖示:

image.png

原理

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

如果vuex中的數據與本組件內的數據名相同,怎么辦呢?

輔助函數mapState對數據重命名

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

## Vuex-map函數用法匯總

image.png

使用全局state

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

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

圖示

image.png

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

使用全局getters

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

使用modules中的getters

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

使用全局mutations

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

使用modules中的mutations(namespaced:true)

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

使用全局actions

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

使用modules中的actions(namespaced:true)

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

總結

責任編輯:龐桂玉 來源: WEB前端開發社區
相關推薦

2018-11-14 10:00:07

程序員開發技巧Git

2015-11-19 09:36:13

前端程序員jQuery

2018-05-08 15:30:46

程序員代碼框架

2022-12-07 10:21:19

谷歌搜索技巧

2016-12-20 18:44:22

2013-06-03 11:24:45

程序調試Java

2014-10-22 10:54:14

程序員

2022-03-09 09:56:27

插件開發效率

2025-04-01 00:26:46

參數技巧arglist

2015-11-05 09:19:12

程序員jQuery技巧

2021-04-08 09:42:17

程序員技能開發者

2023-03-28 23:08:18

Bash編碼Shell

2017-09-26 13:08:51

程序員開發定律

2019-10-17 15:10:33

PHP程序員Linux

2016-12-06 10:12:07

程序員開會

2018-09-20 17:05:01

前端程序員JavaScript

2019-01-23 17:53:05

程序員技能溝通

2019-07-18 12:40:49

Java編程語言性能優化

2020-07-26 18:34:46

Python開發工具

2024-04-24 14:52:26

JavaScriptWeb 開發
點贊
收藏

51CTO技術棧公眾號

主站蜘蛛池模板: 欧美日本亚洲 | 欧美激情va永久在线播放 | 成人久久久久久久久 | 日韩欧美在线播放 | 青青操av| 国产精品海角社区在线观看 | 国产精品99久久免费观看 | 亚洲精精品 | 欧美视频在线看 | 在线一区 | 99亚洲 | 亚洲一区二区三区视频在线 | 国产xxxx在线| 一道本不卡| 在线观看中文字幕av | 福利片在线| 国产精品福利视频 | 91麻豆精品一区二区三区 | 欧美一区二区免费视频 | 久久国产一区二区三区 | 国产精品国产三级国产aⅴ原创 | 在线观看免费黄色片 | 欧美一二三区 | 一区二区三区在线播放 | 成人在线看片 | 国产精品91网站 | 第一色在线 | 激情综合五月 | 国产精品激情 | 久久99网 | 成人精品视频在线观看 | 午夜a√ | 婷婷免费视频 | 国产中文原创 | 日韩视频免费看 | 小h片免费观看久久久久 | 欧美日韩中文字幕 | 亚洲免费大片 | 国产精品久久二区 | 亚洲国产成人av好男人在线观看 | 在线看黄免费 |