網(wǎng)站首頁 編程語言 正文
優(yōu)化計(jì)算屬性mapState、mapGetters和methods的mapActions、mapMutations
作者:南瓜骨頭 更新時(shí)間: 2023-11-25 編程語言優(yōu)化計(jì)算屬性mapState、mapGetters和methods的mapActions、mapMutations
在學(xué)習(xí)以下內(nèi)容前,先了解ES6的拓展運(yùn)算符’…’
- ‘…’的功能:可以將所在數(shù)組或?qū)ο筮M(jìn)行拆分,也就是將[]和{}去除
let arr = [1, 2, 3, 4, 5]
console.log(...arr)
// 執(zhí)行結(jié)果
1 2 3 4 5
let arr = {
x : 1,
y : 2
}
console.log({...arr})
// 執(zhí)行結(jié)果
{x : 1, y : 2}
mapState、mapGetters、mapActions、mapMutations的兩種寫法
- 第一種:數(shù)組形式(保證computed的屬性名、methods的方法名和state的對(duì)象名是一致的)
computed : {
// 數(shù)組形式
...mapState(['對(duì)象名1', '對(duì)象名2', '對(duì)象名3']),
...mapGetters(['方法名1', '方法名2', '方法名3'])
},
methods: {
// 數(shù)組形式
...mapActions(['對(duì)象名1', '對(duì)象名2', '對(duì)象名3']),
...mapMutations(['方法名1', '方法名2', '方法名3'])
}
- 第二種:對(duì)象形式(屬性名和值可以一致,也可不一致)
computed : {
// 對(duì)象形式
...mapState({屬性名1 : '值1', 屬性名2 : '值2', 屬性名3 : '值3'}),
...mapGetters({屬性名1 : '值1', 屬性名2 : '值2', 屬性名3 : '值3'})
},
methods: {
// 對(duì)象形式
...mapActions({屬性名1 : '值1', 屬性名2 : '值2', 屬性名3 : '值3'}),
...mapMutations({屬性名1 : '值1', 屬性名2 : '值2', 屬性名3 : '值3'})
}
有沒有mapState、mapGetters、mapActions、mapMutations的區(qū)別
- 沒有mapState、mapGetters、mapActions、mapMutations
<template>
<div>
<h3>mapState:{{mS}}</h3>
<h3>mapGetters:{{mG}}</h3>
<button @click="mAB">mapActions Button</button>
<button @click="mMB">mapMutations Button</button>
</div>
</template>
<script>
export default {
name : 'Name',
computed : {
mS(){
return this.$store.state.mS
},
mG(){
return this.$store.getters.mG
}
},
methods : {
mAB(){
return this.$store.dispatch('mAB')
},
mMB(){
return this.$store.commit('mMB')
}
}
}
</script>
- 有mapState、mapGetters、mapActions、mapMutations(數(shù)組形式)
<template>
<div>
<h3>mapState:{{mS}}</h3>
<h3>mapGetters:{{mG}}</h3>
<button @click="mAB">mapActions Button</button>
<button @click="mMB">mapMutations Button</button>
</div>
</template>
<script>
// 使用的時(shí)候可以先引入,也可以自動(dòng)添加
import {mapState, mapGetters, mapActions, mapMutations} from 'vuex'
export default {
name : 'Name',
computed : {
...mapState(['mS']),
...mapGetters(['mG'])
},
methods : {
...mapActions(['mAB']),
...mapMutations(['mMB'])
}
}
</script>
- 區(qū)別:在使用
...mapState(['user'])
時(shí),相當(dāng)于生成了一個(gè)user(){return this.$store.state.user}
(舉例說明,其他類型同樣) - 注意:在計(jì)算屬性中,要確保屬性名和state的對(duì)象名、方法名和actions方法名是一致的才能使用mapState、mapGetters的數(shù)組形式。對(duì)象形式如果是
{user : 'user'}
一致的情況也可以使用,但若兩邊不一致則需要進(jìn)行區(qū)分。(建議弄成一致的形式)(舉例說明,其他類型同樣)
屬性名(){
return this.$store.state.對(duì)象名
}
方法名(){
return this.$store.dispatch('方法名')
}
注意:v-model指令跟mapState、mapGetters不能一同使用。
- 因?yàn)閙apState、mapGetters所使用的方法只有g(shù)et,沒有set,而v-model指令是雙向綁定,要有set和get,所以在v-model指令中還是使用原有的方式
{{$store.state.(模塊名).對(duì)象名}}
去調(diào)用即可。
使用modules的mapState、mapGetters、mapActions、mapMutations的寫法
// store.js文件
const a = {
actions : {
......
},
mutations : {
......
},
state : {
......
},
getters : {
......
}
}
export default new Vuex.Store({
modules : {
aModule : a
}
})
// Name.vue
<template>
<div>
<h3>mapState:{{mS}}</h3>
<h3>mapGetters:{{mG}}</h3>
<button @click="mAB">mapActions Button</button>
<button @click="mMB">mapMutations Button</button>
</div>
</template>
<script>
// 使用的時(shí)候可以先引入,也可以自動(dòng)添加
import {mapState, mapGetters, mapActions, mapMutations} from 'vuex'
export default {
name : 'Name',
computed : {
...mapState('aModule', ['mS']),
...mapGetters('aModule', ['mG'])
},
methods : {
...mapMutations('aModule', ['mAB']),
...mapActions('aModule', ['mMB'])
}
}
</script>
原文鏈接:https://blog.csdn.net/weixin_47957908/article/details/134091910
- 上一篇:沒有了
- 下一篇:沒有了
相關(guān)推薦
- 2023-02-01 C++泛型編程綜合講解_C 語言
- 2023-01-07 Flutter基于Dart?Unwrapping?Multiple?Optional小技巧_Andr
- 2023-04-27 python請(qǐng)求域名requests.(url?=?地址)報(bào)錯(cuò)_python
- 2022-05-26 Python?pass語句作用和Python?assert斷言函數(shù)的用法_python
- 2023-03-17 使用Python創(chuàng)建websocket服務(wù)端并給出不同客戶端的請(qǐng)求_python
- 2022-08-28 IntelliJ IDEA 下debugger熱加載(Hot Swap)有時(shí)候失效解決
- 2022-06-02 Python進(jìn)程池基本概念_python
- 2022-04-30 DataGridView實(shí)現(xiàn)點(diǎn)擊列頭升序和降序排序_C#教程
- 欄目分類
-
- 最近更新
-
- window11 系統(tǒng)安裝 yarn
- 超詳細(xì)win安裝深度學(xué)習(xí)環(huán)境2025年最新版(
- Linux 中運(yùn)行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲(chǔ)小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎(chǔ)操作-- 運(yùn)算符,流程控制 Flo
- 1. Int 和Integer 的區(qū)別,Jav
- spring @retryable不生效的一種
- Spring Security之認(rèn)證信息的處理
- Spring Security之認(rèn)證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權(quán)
- redisson分布式鎖中waittime的設(shè)
- maven:解決release錯(cuò)誤:Artif
- restTemplate使用總結(jié)
- Spring Security之安全異常處理
- MybatisPlus優(yōu)雅實(shí)現(xiàn)加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務(wù)發(fā)現(xiàn)-Nac
- Spring Security之基于HttpR
- Redis 底層數(shù)據(jù)結(jié)構(gòu)-簡單動(dòng)態(tài)字符串(SD
- arthas操作spring被代理目標(biāo)對(duì)象命令
- Spring中的單例模式應(yīng)用詳解
- 聊聊消息隊(duì)列,發(fā)送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠(yuǎn)程分支