[qiankun]主应用和子应用间通信报错:[vuex] do not mutate vuex store state outside mutation handlers.

报错情况:在这里插入图片描述
主要原因是主应用中定义的全局状态下发给子应用,子应用注册成vuex全局状态后,并修改了值更新给主应用,主应用也同步更新自己的全局状态,此时的全局状态是vuex注册过的,在主应用更改就会报错了。

主应用定义了全局数据(主要是登录的用户数据),用于下发给子应用:
store.js

import {
   initGlobalState} from 'qiankun'
import {
   reactive} from 'vue'
import registerGlobalModule from "./globalRegister"

// 让initialState变成可响应的:https://v3.cn.vuejs.org/guide/reactivity-fundamentals.html#%E5%A3%B0%E6%98%8E%E5%93%8D%E5%BA%94%E5%BC%8F%E7%8A%B6%E6%80%81
const initialState = reactive({
   
    user: {
   
        name: ''
    }
})
// 初始化全局状态
const actions = initGlobalState(initialState)
// actions默认提供:监听全局状态变化:state 新状态, prev 旧状态
actions.onGlobalStateChange((state, prev) => {
   
    console.log('【main change】', state, prev, initialState)
    for (const key in state) {
   
         initialState[key] = state[key]
     }
})
// 获取globalState下的某个子级对象,无key,表示取全部
actions.getGlobalState = (key) => {
   
    return key 
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值