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