vuex新手進(jìn)階篇之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)用 }, // ------------------------------------------------------------------------------------------- //因?yàn)槲覀冊趍odules下開啟了命名空間,所以我們在調(diào)用dict下的Actions時(shí),需在前方加上空間名字 changeDict() { this.$store.dispatch("dict/getTaskTypeDict"); }, //因?yàn)槲覀冮_辟了命名空間,故需要重寫一個(gè)方法名,進(jìn)行承接映射,注意此處不再是數(shù)組,而是一個(gè)對象 ...mapActions({ getDicts: "dict/getTaskTypeDict2" }), changeDict2() { this.getDicts(); }, }, }; </script>
3.注意點(diǎn)
action 類似于 mutation,不同在于
1.action 提交的是 mutation事件,而不是直接去改變state的狀態(tài)值,改變state的值只有通過mutation
2.action 可以包含任意異步操作
actions的細(xì)節(jié)補(bǔ)充
1.參數(shù)問題
2.context的其他屬性
3.另外一種提交風(fēng)格(見上以對象的形式進(jìn)行分發(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新手進(jìn)階篇之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()強(qiáng)制刷新,文章給大家分享了代碼案例,需要的朋友參考下吧2018-07-07關(guān)于ElementPlus中的表單驗(yàn)證規(guī)則詳解
這篇文章主要介紹了關(guān)于ElementPlus中的表單驗(yàn)證,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),對大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下2023-06-06vue實(shí)現(xiàn)多個(gè)echarts根據(jù)屏幕大小變化而變化實(shí)例
這篇文章主要介紹了vue實(shí)現(xiàn)多個(gè)echarts根據(jù)屏幕大小變化而變化實(shí)例,具有很好的參考價(jià)值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-07-07一步步教你用Vue.js創(chuàng)建一個(gè)組件(附代碼示例)
組件(Component)是Vue.js最強(qiáng)大的功能之一,組件可以擴(kuò)展HTML元素,封裝可重用的代碼,下面這篇文章主要給大家介紹了關(guān)于如何一步步用Vue.js創(chuàng)建一個(gè)組件的相關(guān)資料,需要的朋友可以參考下2022-12-12Vant彈出列表多選輸入框下拉選擇代碼(可直接復(fù)制使用)
vue項(xiàng)目無論是用element中的Select選擇器,還是使用公司維護(hù)的組件,都可以輕松實(shí)現(xiàn)單選和多選的需求,這篇文章主要給大家介紹了關(guān)于Vant彈出列表多選輸入框下拉選擇的相關(guān)資料,需要的朋友可以參考下2024-01-01vant遇到van-sidebar數(shù)據(jù)超出不能滑動的問題
這篇文章主要介紹了vant遇到van-sidebar數(shù)據(jù)超出不能滑動的問題,具有很好的參考價(jià)值,希望對大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-04-04