You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Vuex命名空间Store复用同一模块时两个实例state同时被修改问题

问题根源

你遇到的问题和命名空间的使用逻辑无关,问题出在可复用模块的state定义不符合Vuex规范:你在模块顶层定义了一个常量state对象,导出的state工厂函数每次都返回这个对象的引用,导致注册的filter1和filter2两个模块共享同一块状态内存,修改任意一个模块的状态都会同步影响另一个模块。

修复方案

只需要调整filter.module.js的state定义,保证每次调用state工厂函数时都返回一个全新的状态对象即可:

const actions = {};
const mutations = {
  [SET_ID_FILTER](state, id) {
    state.idFilter = id;
  },
};
const getters = {
  getFilter(state) {
    return state.idFilter;
  },
};
export default {
  namespaced: true,
  // 每次返回全新对象,切断模块间的状态引用关联
  state: () => ({
    idFilter: null
  }),
  actions,
  mutations,
  getters
};

修改后两个模块的状态会完全隔离,你原有提交mutation、读取状态的代码不需要做任何调整,即可实现两个表格筛选配置互不干扰的需求。

内容的提问来源于stack exchange,提问作者Trojan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 21:09:01