Vuex子模块调用子模块的actions或mutations实现方式
Vuex子模块调用子模块的actions或mutations
项目场景
Vuex中子模块如何调用子模块的actions或mutations
问题描述
因为有的子模块开启了命名空间,其他子模块不能直接访问
如果子模块没有开启命名空间,默认mutations和actions是挂载到全局上 都可以直接调用
这是准备调用的子模块代码 permission.js
const state = {} const mutations = {} const actions = {} } export default { namespaced: true, // 开启命名空间 state, mutations, actions }
解决方案
使用 {root:true}
调用的子模块的代码
const actions = { async lgout(context) { // 调用 permission 另一子模块下的方法 context.commit('permission/setRoutes', [], { root: true }) } }
vuex中actions和mutations区别
定义:
在Vuex中,actions和mutations是两个核心概念,用于管理应用程序状态的变化。
Mutations
mutations是用于修改Vuex状态的唯一方法。
它们是同步操作,意味着它们必须是纯函数,以确保状态的可预测性。
这意味着mutations应该只用于同步操作,例如在响应用户事件时更新状态。
它们不应该包含任何异步代码,如API调用。
举个例子,下面的代码演示了如何定义一个名为increment的mutation,用于将state中的count属性增加
const store = new Vuex.Store({ state: { count: 0 }, mutations: { increment(state) { state.count++ } } }) store.commit('increment') // 调用mutation
Actions
actions用于执行异步操作或包含异步操作的操作序列。
它们可以包含任何异步代码,例如API调用或其他异步操作,但不能直接修改状态。
相反,它们通过commit触发mutations来间接修改状态。
举个例子,下面的代码演示了如何定义一个名为fetchData的action,它会异步获取数据并提交mutation来更新状态:
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') // 调用action
总之,mutations和actions有不同的角色和职责。
mutations用于同步状态的修改,actions用于执行异步操作并间接修改状态。
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
Vuex如何获取getter对象中的值(包括module中的getter)
这篇文章主要介绍了Vuex如何获取getter对象中的值(包括module中的getter),具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2022-08-08elementUI checkBox报错Cannot read property &ap
这篇文章主要为大家介绍了elementUI checkBox报错Cannot read property 'length' of undefined的解决分析,有需要的朋友可以借鉴参考下,希望能够有所帮助,祝大家多多进步,早日升职加薪2023-06-06vue使用splice()删除数组中的一个数据 弹出窗口提示问题
这篇文章主要介绍了vue使用splice()删除数组中的一个数据 弹出窗口提示问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-07-07
最新评论