Vuex子模塊調(diào)用子模塊的actions或mutations實(shí)現(xiàn)方式
Vuex子模塊調(diào)用子模塊的actions或mutations
項(xiàng)目場(chǎng)景
Vuex中子模塊如何調(diào)用子模塊的actions或mutations
問(wèn)題描述
因?yàn)橛械淖幽K開(kāi)啟了命名空間,其他子模塊不能直接訪問(wèn)
如果子模塊沒(méi)有開(kāi)啟命名空間,默認(rèn)mutations和actions是掛載到全局上 都可以直接調(diào)用
這是準(zhǔn)備調(diào)用的子模塊代碼 permission.js
const state = {}
const mutations = {}
const actions = {}
}
export default {
namespaced: true, // 開(kāi)啟命名空間
state,
mutations,
actions
}
解決方案
使用 {root:true}
調(diào)用的子模塊的代碼
const actions = {
async lgout(context) {
// 調(diào)用 permission 另一子模塊下的方法
context.commit('permission/setRoutes', [], { root: true })
}
}
vuex中actions和mutations區(qū)別
定義:
在Vuex中,actions和mutations是兩個(gè)核心概念,用于管理應(yīng)用程序狀態(tài)的變化。
Mutations
mutations是用于修改Vuex狀態(tài)的唯一方法。
它們是同步操作,意味著它們必須是純函數(shù),以確保狀態(tài)的可預(yù)測(cè)性。
這意味著mutations應(yīng)該只用于同步操作,例如在響應(yīng)用戶事件時(shí)更新?tīng)顟B(tài)。
它們不應(yīng)該包含任何異步代碼,如API調(diào)用。
舉個(gè)例子,下面的代碼演示了如何定義一個(gè)名為increment的mutation,用于將state中的count屬性增加
const store = new Vuex.Store({
state: {
count: 0
},
mutations: {
increment(state) {
state.count++
}
}
})
store.commit('increment') // 調(diào)用mutation
Actions
actions用于執(zhí)行異步操作或包含異步操作的操作序列。
它們可以包含任何異步代碼,例如API調(diào)用或其他異步操作,但不能直接修改狀態(tài)。
相反,它們通過(guò)commit觸發(fā)mutations來(lái)間接修改狀態(tài)。
舉個(gè)例子,下面的代碼演示了如何定義一個(gè)名為fetchData的action,它會(huì)異步獲取數(shù)據(jù)并提交mutation來(lái)更新?tīng)顟B(tài):
const store = new Vuex.Store({
state: {
data: null
},
mutations: {
setData(state, data) {
state.data = data
}
},
actions: {
async fetchData({ commit }) {
const response = await fetch('https://api.example.com/data')
const data = await response.json()
commit('setData', data)
}
}
})
store.dispatch('fetchData') // 調(diào)用action
總之,mutations和actions有不同的角色和職責(zé)。
mutations用于同步狀態(tài)的修改,actions用于執(zhí)行異步操作并間接修改狀態(tài)。
總結(jié)
以上為個(gè)人經(jīng)驗(yàn),希望能給大家一個(gè)參考,也希望大家多多支持腳本之家。
相關(guān)文章
vue把頁(yè)面轉(zhuǎn)換成圖片導(dǎo)出方式(html2canvas導(dǎo)出不全問(wèn)題)
這篇文章主要介紹了vue把頁(yè)面轉(zhuǎn)換成圖片導(dǎo)出方式(html2canvas導(dǎo)出不全問(wèn)題),具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2023-10-10
vue style width a href動(dòng)態(tài)拼接問(wèn)題的解決
這篇文章主要介紹了vue style width a href動(dòng)態(tài)拼接問(wèn)題的解決,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2020-08-08
vue動(dòng)態(tài)刪除從數(shù)據(jù)庫(kù)倒入列表的某一條方法
今天小編就為大家分享一篇vue動(dòng)態(tài)刪除從數(shù)據(jù)庫(kù)倒入列表的某一條方法,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。一起跟隨小編過(guò)來(lái)看看吧2018-09-09
Vue/React子組件實(shí)例暴露方法(TypeScript)
最近幾個(gè)月都在用TS開(kāi)發(fā)各種項(xiàng)目,框架有涉及到Vue3,React18等,記錄一下Vue/React組件暴露出變量/函數(shù)的方法的寫法,對(duì)vue?react組件暴露方法相關(guān)知識(shí)感興趣的朋友跟隨小編一起看看吧2022-11-11
Vue ECharts餅圖實(shí)現(xiàn)方法詳解
這篇文章主要介紹了在vue.js中,使用echarts組件,創(chuàng)建一個(gè)餅圖,并且獲取餅圖的數(shù)據(jù)和屬性,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧2022-12-12
Vue3進(jìn)行樣式Scoped和Global的設(shè)置方法
在 Vue 3 中,組件化開(kāi)發(fā)成為了我們提升前端開(kāi)發(fā)效率的利器,其中,樣式的管理也是一個(gè)至關(guān)重要的部分,在 Vue 中,我們會(huì)經(jīng)常使用兩種樣式作用域:Scoped 樣式和 Global 樣式,本文將通過(guò)示例代碼來(lái)介紹Vue3如何進(jìn)行樣式Scoped和Global的設(shè)置,需要的朋友可以參考下2025-01-01
使用vue.js開(kāi)發(fā)時(shí)一些注意事項(xiàng)
使用vue.js進(jìn)行項(xiàng)目的開(kāi)發(fā)已經(jīng)有了一定的時(shí)間,在任務(wù)的過(guò)程中以及和不同的開(kāi)發(fā)使用者交流中,逐漸對(duì)vue.js的使用心得有了一定的積累。本文主要給大家分享一些開(kāi)發(fā)時(shí)需要注意的事項(xiàng)2016-04-04

