vuex新手進階篇之a(chǎn)ctions的使用方法
緊接上篇文章,本篇文章講vuex ,如何去改變state ,actions的使用,我依然使用了vuex的modules
1.設(shè)置actions事件
index.js

dict.js

2.在組件中去分發(fā)actions
<template>
<div>
<div>
改變vuex index.js 下的state
<div>
{{ $store.state.userInfo.name + "---" + $store.state.userInfo.age }}
</div>
<div>
<button @click="changeUserInfo">修改方式1</button>
</div>
<div>
<button @click="changeUserInfo2">修改方式2</button>
</div>
</div>
--------------------------------------------------
<div>
改變vuex index.js modules下的dict 下的state
<div>
{{ $store.state.dict.taskTypeDict }}
</div>
<div>
<button @click="changeDict">修改方式1</button>
</div>
<div>
<button @click="changeDict2">修改方式2</button>
</div>
</div>
</div>
</template>
<script>
import { mapActions } from "vuex"; //方式二 1.首先引入
export default {
methods: {
// 方式一,dispatch分發(fā)事件
changeUserInfo() {
this.$store.dispatch("getUserInfo");
},
// 方式二
...mapActions(["getUserInfo2"]), //2.使用mapActions函數(shù)將組件的 methods 映射為 store.dispatch 調(diào)用
changeUserInfo2() {
this.getUserInfo2(); //3.調(diào)用
},
// -------------------------------------------------------------------------------------------
//因為我們在modules下開啟了命名空間,所以我們在調(diào)用dict下的Actions時,需在前方加上空間名字
changeDict() {
this.$store.dispatch("dict/getTaskTypeDict");
},
//因為我們開辟了命名空間,故需要重寫一個方法名,進行承接映射,注意此處不再是數(shù)組,而是一個對象
...mapActions({ getDicts: "dict/getTaskTypeDict2" }),
changeDict2() {
this.getDicts();
},
},
};
</script>3.注意點
action 類似于 mutation,不同在于
1.action 提交的是 mutation事件,而不是直接去改變state的狀態(tài)值,改變state的值只有通過mutation
2.action 可以包含任意異步操作
actions的細節(jié)補充
1.參數(shù)問題
2.context的其他屬性
3.另外一種提交風格(見上以對象的形式進行分發(fā))
//store的index.js中
actions: {
// 放函數(shù)
// 1.參數(shù)問題
incrementAction(context, payload) {
console.log(payload)
setTimeout(() => {
context.commit('increment')
}, 1000);
},
// 2.context的其他屬性
decrementAction({ commit, dispatch, state, rootState, getters, rootGetters }) {
commit("decrement")
}
}
總結(jié)
到此這篇關(guān)于vuex新手進階篇之a(chǎn)ctions使用的文章就介紹到這了,更多相關(guān)vuex actions的使用內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
解決vue this.$forceUpdate() 處理頁面刷新問題(v-for循環(huán)值刷新等)
這篇文章主要介紹了解決vue this.$forceUpdate() 處理頁面刷新問題(v-for循環(huán)值刷新等),解決方法是使用this.$forceUpdate()強制刷新,文章給大家分享了代碼案例,需要的朋友參考下吧2018-07-07
關(guān)于ElementPlus中的表單驗證規(guī)則詳解
這篇文章主要介紹了關(guān)于ElementPlus中的表單驗證,本文通過實例代碼給大家介紹的非常詳細,對大家的學(xué)習或工作具有一定的參考借鑒價值,需要的朋友可以參考下2023-06-06
vue實現(xiàn)多個echarts根據(jù)屏幕大小變化而變化實例
這篇文章主要介紹了vue實現(xiàn)多個echarts根據(jù)屏幕大小變化而變化實例,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07
一步步教你用Vue.js創(chuàng)建一個組件(附代碼示例)
組件(Component)是Vue.js最強大的功能之一,組件可以擴展HTML元素,封裝可重用的代碼,下面這篇文章主要給大家介紹了關(guān)于如何一步步用Vue.js創(chuàng)建一個組件的相關(guān)資料,需要的朋友可以參考下2022-12-12
Vant彈出列表多選輸入框下拉選擇代碼(可直接復(fù)制使用)
vue項目無論是用element中的Select選擇器,還是使用公司維護的組件,都可以輕松實現(xiàn)單選和多選的需求,這篇文章主要給大家介紹了關(guān)于Vant彈出列表多選輸入框下拉選擇的相關(guān)資料,需要的朋友可以參考下2024-01-01
vant遇到van-sidebar數(shù)據(jù)超出不能滑動的問題
這篇文章主要介紹了vant遇到van-sidebar數(shù)據(jù)超出不能滑動的問題,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教2022-04-04

