微前端中多个Vue子应用如何安全共享Vuex状态而不冲突?
我在用Single-SPA搭建微前端时遇到问题:有两个Vue子应用需要共享用户登录状态,尝试在父应用通过Vuex持久化存储,但发现状态会被另一个子应用覆盖,这是为什么呢?
我在父应用store.js设置了命名空间:
const store = new Vuex.Store({
modules: {
user: {
namespaced: true,
state: { token: localStorage.getItem('token') }
}
}
})
子应用通过this.$store访问时,发现修改token后另一个子应用的状态也同步变化。试过在子应用单独初始化store,但又会导致状态丢失。应该怎么设计才能让多个子应用安全共享部分状态呢?
store选项接入,别自己 new Store。状态统一在主应用管理,子应用只读写不初始化。命名空间只是隔离模块,store 还是同一个实例,所以会互相影响。你想让两个子应用共享又不冲突,只能走主应用中转,差不多就行。