vuex存数据实现两个页面数据同步

state: {
    token: getToken(),
    navProjectLists: [], //右上角项目下拉数据
  },
  mutations: {
    SET_TOKEN: (state, token) => {
      state.token = token
    },
     setNavProjectLists: (state, navProjectLists) => {
      state.navProjectLists = navProjectLists
    }
  },
actions: {
    updateNavProjectLists({ commit }) {
      let data = {};
      data.pageSize = 10000;

      return new Promise((resolve, reject) => {
        getList(data).then(res => {
          const projectDatas = res.rows.map(item => ({
            text: item.cname,
            value: item.id
          }));
  
          commit('setNavProjectLists', projectDatas)
          resolve()
        }).catch(error => {
          reject(error)
        })
      })
    },

需求是创建项目列表增删改后右上角的项目下拉数据要同步下;需要给数据存起来监听数据变化;

async getOption() {
      // this.consumers = (await getOptions("loginCompanyId")) || [];
      this.$store.dispatch("updateNavProjectLists").then(() => {
        this.consumers = this.$store.state.user.navProjectLists; // 从 getter 中获取更新后的值
        let str = localStorage.getItem("selectConsumerId");
        if (str) {

        } else {
          this.consumerId = this.consumers[0]?.value;
          localStorage.setItem("selectConsumerId", this.consumerId);
        }
      });
    },
 watch: {
    '$store.state.user.navProjectLists': {
      handler(val) {
        this.consumers = this.$store.state.user.navProjectLists
        this.consumerId = this.consumers[0]?.value;
        localStorage.setItem("selectConsumerId", this.consumerId);
      },
      deep: true
    }
  },
 refreshList() {
      this.$refs.baseTable.onSearch()
      this.$store.dispatch("updateNavProjectLists")
    },

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值