最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

vuex中...mapstate和...mapgetters的區(qū)別及說明

 更新時(shí)間:2022年08月31日 10:20:28   作者:番茄炒蛋多加米飯  
這篇文章主要介紹了vuex中...mapstate和...mapgetters的區(qū)別及說明,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教

...mapstate和...mapgetters的區(qū)別

…mapstate

當(dāng)一個(gè)組件需要獲取多個(gè)狀態(tài)時(shí)候,將這些狀態(tài)都聲明為計(jì)算屬性會(huì)有些重復(fù)和冗余。為了解決這個(gè)問題,我們可以使用 mapState 輔助函數(shù)幫助我們生成計(jì)算屬性,當(dāng)映射的計(jì)算屬性的名稱與 state 的子節(jié)點(diǎn)名稱相同時(shí),我們也可以給 mapState 傳一個(gè)字符串?dāng)?shù)組。

computed: mapState([
? // 映射 this.count 為 store.state.count
? 'count'
])

官方文檔如上

因?yàn)閟tate相當(dāng)于data,getters相當(dāng)于計(jì)算屬性,個(gè)人理解如果只需要拿到state中一個(gè)值,就沒必要在getters中作為計(jì)算屬性出現(xiàn)。

…mapGetters

輔助函數(shù)僅僅是將 store 中的 getter 映射到局部計(jì)算屬性

如果你想將一個(gè) getter 屬性另取一個(gè)名字,使用對(duì)象形式:

...mapGetters({
? // 把 `this.doneCount` 映射為 `this.$store.getters.doneTodosCount`
? doneCount: 'doneTodosCount'
})

官方文檔如上

相當(dāng)于計(jì)算屬性,等于把vuex中的計(jì)算屬性映射到了當(dāng)前組件中

vuex mapState mapGetters用法及多個(gè)module下用法

在vuex,當(dāng)一個(gè)組件需要獲取多個(gè)狀態(tài)的時(shí)候,將這些狀態(tài)都聲明為計(jì)算屬性會(huì)有些重復(fù)和冗余,例如

computed: {
? count() {
? ? return this.$store.state.count
? },
? name() {
? ? return this.$store.state.name
? },
? age() {
? ? return this.$store.getter.age
? },
? userInfo() {
? ? return this.$store.getter.userInfo
? }
}

為了解決這個(gè)問題,我們可以使用 mapState和mapGetters 輔助函數(shù)幫助我們生成計(jì)算屬性,讓你少按幾次鍵

一、mapState

1、對(duì)象寫法

// 在單獨(dú)構(gòu)建的版本中輔助函數(shù)為 Vuex.mapState
import { mapState } from 'vuex'
export default {
? computed: mapState({
??
? ? // 傳函數(shù)參數(shù)
? ? count: state => state.count, // 箭頭函數(shù)可使代碼更簡練 映射為this.count
? ? userCount: state => state => state.user.count, // 模塊化寫法 箭頭函數(shù)可使代碼更簡練 映射為this.userCount
? ??
? ? // 傳字符串參數(shù)
? ? userName: 'name', // name等同于state => state.name,不支持模塊化寫法 映射為this.userName
? ??
? ? // 需要使用this局部狀態(tài),使用常規(guī)函數(shù)寫法
? ? age(state) { // 映射為this.age
? ? ? return state.age + this.age // 可與局部狀態(tài)組合
? ? }
? })
}

2、字符串?dāng)?shù)組寫法

除此之外,還有更簡潔的寫法

當(dāng)映射的計(jì)算屬性的名稱與 state 的子節(jié)點(diǎn)名稱相同時(shí),我們也可以給 mapState 傳一個(gè)字符串?dāng)?shù)組,類似于對(duì)象的key和value鍵名相同時(shí){ name: name } =》{ name }

computed: mapState([
? 'count', // 映射 this.count 為 store.state.count
? 'name' // 映射 this.name為 store.state.name
])

此外如果是用到了module模塊化,除了將對(duì)象作為參數(shù)傳遞之外,namespaced mapState還可以使用兩個(gè)參數(shù):namespace和表示模塊成員的對(duì)象名稱數(shù)組,像這樣

computed: mapState('user', ['count', 'name']) // user 模塊名稱

3、使用展開運(yùn)算符

mapState 函數(shù)返回的是一個(gè)對(duì)象,這樣就造成無法與當(dāng)前局部組件計(jì)算屬性混合使用

以前我們需要使用一個(gè)工具函數(shù)將多個(gè)對(duì)象合并為一個(gè),以使我們可以將最終對(duì)象傳給 computed 屬性。

自從有了展開運(yùn)算符后,可以極大地簡化寫法

computed: {
? ...mapState([
? ? 'count', // 映射 this.count 為 store.state.count
? ? 'name' // 映射 this.name為 store.state.name
? ]),
? // 局部組件計(jì)算屬性
? localComputed () {},
}

二、mapGetters

mapGetters輔助函數(shù)寫法相同

computed: {
? ...mapGetters([
? ? 'count', // 映射 this.count 為 store.getters.count
? ? 'name' // 映射 this.name為 store.getters.name
? ]),
? // 局部組件計(jì)算屬性
? localComputed () {},
}

模塊化寫法

...mapGetters('user', ['count', 'name']) // user 模塊名稱

三、mapActions、mapMutations

mapActions、mapMutations用法相同,他們的作用都是把a(bǔ)ctions、mutations里的方法映射到局部組件調(diào)用

例如:

以前的調(diào)用actions:

this.$store.dispatch("test", "value")
this.$store.dispatch("user/test", "value") // user模塊化, 第二個(gè)參數(shù)為傳參

使用輔助函數(shù)后調(diào)用

...mapActions([
? ? "test",
])
this.test('value')

總結(jié)以上,推薦使用展開運(yùn)算符+字符串?dāng)?shù)組傳參的方式使用,可以極大簡化代碼,更優(yōu)雅,不冗余 

這些僅為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。 

相關(guān)文章

  • 使用vant?自定義彈框全過程

    使用vant?自定義彈框全過程

    這篇文章主要介紹了使用vant?自定義彈框全過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-05-05
  • Element如何實(shí)現(xiàn)loading的方法示例

    Element如何實(shí)現(xiàn)loading的方法示例

    本文主要介紹了Element如何實(shí)現(xiàn)loading的方法示例,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2022-06-06
  • vue中監(jiān)聽路由參數(shù)的變化及方法

    vue中監(jiān)聽路由參數(shù)的變化及方法

    這篇文章主要介紹了vue中監(jiān)聽路由參數(shù)的變化,給大家介紹了vue中監(jiān)聽路由參數(shù)變化的方法,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-12-12
  • 前端vue按1920*1080設(shè)計(jì)圖的頁面適配屏幕縮放并適配4K屏詳解

    前端vue按1920*1080設(shè)計(jì)圖的頁面適配屏幕縮放并適配4K屏詳解

    最近在做一個(gè)數(shù)據(jù)可視化的項(xiàng)目,整個(gè)項(xiàng)目全是大屏展示,期間也是遇到很多問題,最令人頭疼的就是大屏的適配,下面這篇文章主要給大家介紹了前端vue按1920*1080設(shè)計(jì)圖的頁面適配屏幕縮放并適配4K屏的相關(guān)資料,需要的朋友可以參考下
    2022-11-11
  • Vue項(xiàng)目打包部署后瀏覽器自動(dòng)清除緩存問題的解決方法

    Vue項(xiàng)目打包部署后瀏覽器自動(dòng)清除緩存問題的解決方法

    這篇文章主要介紹了vue打包部署后 瀏覽器緩存問題,導(dǎo)致控制臺(tái)報(bào)錯(cuò)ChunkLoadError: Loading chunk failed的解決方案,文中有相關(guān)的圖文和代碼供大家參考,具有一定的參考價(jià)值,需要的朋友可以參考下
    2024-12-12
  • axios的攔截請(qǐng)求與響應(yīng)方法

    axios的攔截請(qǐng)求與響應(yīng)方法

    今天小編就為大家分享一篇axios的攔截請(qǐng)求與響應(yīng)方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過來看看吧
    2018-08-08
  • 關(guān)于Vue3&TypeScript的踩坑匯總

    關(guān)于Vue3&TypeScript的踩坑匯總

    這篇文章主要介紹了關(guān)于Vue3&TypeScript的踩坑匯總,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-09-09
  • Vue3 v-bind 指令的基本用法

    Vue3 v-bind 指令的基本用法

    在 Vue 3 中,v-bind?指令用于將表達(dá)式的值綁定到 DOM 元素的屬性上,這個(gè)指令的語法與 Vue 2 相同,但有一些細(xì)微的變化和改進(jìn),這篇文章主要介紹了Vue3 v-bind 指令的基本用法,需要的朋友可以參考下
    2024-08-08
  • vue3+ts+Vuex中使用websocket協(xié)議方式

    vue3+ts+Vuex中使用websocket協(xié)議方式

    這篇文章主要介紹了vue3+ts+Vuex中使用websocket協(xié)議方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2022-10-10
  • vue使用Proxy實(shí)現(xiàn)雙向綁定的方法示例

    vue使用Proxy實(shí)現(xiàn)雙向綁定的方法示例

    這篇文章主要介紹了vue使用Proxy實(shí)現(xiàn)雙向綁定的方法示例,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-03-03

最新評(píng)論

乌拉特中旗| 松滋市| 调兵山市| 佛冈县| 时尚| 西华县| 互助| 金山区| 大竹县| 北安市| 南部县| 泾源县| 论坛| 无为县| 焉耆| 宣恩县| 纳雍县| 定日县| 甘孜县| 斗六市| 宁夏| 永平县| 元谋县| 富平县| 都匀市| 鄂尔多斯市| 龙胜| 眉山市| 黔东| 弋阳县| 张北县| 徐州市| 竹北市| 江西省| 泾川县| 赣榆县| 荔波县| 陆河县| 图木舒克市| 馆陶县| 海安县|