詳解vuex中mapState,mapGetters,mapMutations,mapActions的作用
在開始接觸vuex框架的時候?qū)δ切﹕tate,action,mutation,getter等理解的還挺順利的,然后突然出來一種加了一個前綴的mapState等,這樣的就有點蒙圈了。。。特別是官方的文檔并沒有給除詳細的說明跟例子。。。然后就自己慢慢理解了一下。其實也就是一個重命名而已。。。以下就是例子,希望能幫助理解:
在store中代碼
import Vuex from 'vuex'
import Vue from 'vue'
Vue.use(Vuex);
const store = new Vuex.Store({
state: {
count: 10,
numb: 10086
},
getters: {
add: (state, getter) => {
state.count = getter.add;
return state.count;
},
},
mutations: {
increment(state,){
state.count += 2;
},
},
actions: {
actionA({ dispatch, commit }) {
return commit('add');
},
}
}); export default store;
在調(diào)用的模塊里面的代碼如下:
<template>
<div class="hello">
<button @click="increment">加{{count}}</button>
</div>
</template>
<script>
import {mapState,mapActions} from 'vuex'
export default {
name: 'hello',
data () {
return {
msg: 'Welcome to Your Vue.js App'
}
},
methods:{
increment(){
this.$store.dispatch('incrementsync').then(() => {
console.log('then');
});
}
},
computed: mapState({ // mapState相當于映射
count: 'numb', //這個時候count應該等于多少???! 是等于store文件里面的count呢還是等于numb?答案是等于numb!這邊的意思是mapState把'numb'的值映射給了count,所以count等于10086
})
}
</script> 這個時候按鈕應該顯示加10還是顯示加10086?答案是加10086,所以map其實就是一個在store文件中的映射而已,就是不用讓你要調(diào)用一個值需要敲這么多代碼:this.$state.count;而只需要用count。。。
界面效果:

好了,其他的mapAction,mapMutations的原理是一樣樣的。
總結(jié)
以上所述是小編給大家介紹的詳解vuex中mapState,mapGetters,mapMutations,mapActions的作用,希望對大家有所幫助,如果大家有任何疑問請給我留言,小編會及時回復大家的。在此也非常感謝大家對腳本之家網(wǎng)站的支持!
相關(guān)文章
VUE使用vue?create命令創(chuàng)建vue2.0項目的全過程
vue-cli是創(chuàng)建Vue項目的一個腳手架工具,vue-cli提供了vue create等命令,下面這篇文章主要給大家介紹了關(guān)于VUE使用vue?create命令創(chuàng)建vue2.0項目的相關(guān)資料,文中通過圖文介紹的非常詳細,需要的朋友可以參考下2022-07-07
Vite結(jié)合Vue刪除指定環(huán)境的console.log問題
這篇文章主要介紹了Vite結(jié)合Vue刪除指定環(huán)境的console.log問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2023-03-03
解決vue的router組件component在import時不能使用變量問題
這篇文章主要介紹了解決vue的router組件component在import時不能使用變量問題,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07

