练习vuex:踩坑——初始值设为0

 watch: {
    actualTransfer: {
      handler(n) {
        if (n || n === 0) {
          console.log(n, "qqqqqqqqq");
          // this.option.series[0].data[0][1] = this.actualTransfer;
          this.$set(this.option.series[0].data[0], 1, this.actualTransfer);
          console.log(this.option.series[0].data[0][1], "22222");
        }
      },
      deep: true,
      immediate: true,
    },
    notTransfer: {
      handler(n, o) {
        if (n || n === 0) {
          console.log(n, "wwwwwwwwwwwwwwwwwww");
          // this.option.series[0].data[1][1] = this.notTransfer;
          this.$set(this.option.series[0].data[1], 1, this.notTransfer);
          console.log(this.option.series[0].data[1][1], "111111");
          this.$nextTick(() => {
            this.init();
          });
        }
      },
      deep: true,
      immediate: true,
    },
  },
  computed: {
    actualTransfer() {//0
      return this.$store.state.fundsData.actualTransfer;
    },
    notTransfer() {
      return this.$store.state.fundsData.notTransfer;
    },
  },
  methods: {
    async initData() {
      let result = await requestApi.maintenanceFunds();
      if (result.data.data.code === 0) {
        var data = result.data.data.data;
        this.$store.commit(
          "fundsData/setActualTransfer",
          Number((Number(data.publicFixFundCircle.data[0][1]) / 10000).toFixed(2))
        );
        this.$store.commit(
          "fundsData/setNotTransfer",
          Number((Number(data.publicFixFundCircle.data[1][1]) / 10000).toFixed(2))
        );
        console.log(
          this.$store.state.fundsData.actualTransfer,
          this.$store.state.fundsData.notTransfer,
          "datadata"
        );

        /* this.$store.commit(
          "fundsData/setRealTransfer",
          Number(
            (Number(data.houseSalePriceTransferCircle.data[0][1]) / 10000).toFixed(2)
          )
        );
        this.$store.commit(
          "fundsData/setShouldTransfer",
          Number(
            (Number(data.houseSalePriceTransferCircle.data[1][1]) / 10000).toFixed(2)
          )
        ); */

        /* console.log(this.$store.state.fundsData.shouldTransfer,this.$store.state.fundsData.realTransfer,"nnnnnnnnn"); */
      }
    },

在这里插入图片描述
以上是更改后的代码(正确的)
datadata:是本页面请求完接口打印的store(正确)
store中初始值为 ‘ ’

在这里插入图片描述
在这里插入图片描述
以上两张图片是store中初始值为0的情况下
computed第一次会从store中获取值==0,且被watch监听到,此时接口还未请求完数据,均是默认值0,notTransfer中,n=0会执行代码,init方法会被执行
当请求完接口后,watch再一次监听到,但notTransfer中的new值就是0,不会执行,也不会重新init

将vuex中的初始值设为“”!!!

如果将其设为默认值,则会在第一次computer中和watch中执行,当请求到数据后,再次更新watch,会屏闪

vuex的持久化存储

import db from "@/utils/localstorage";

export default {
  namespaced: true,
  state: {
    // ids: ""
    ids: db.get("relatedIds")
  },
  mutations: {
    // 当第一次出发更新时,执行了save,但是state.ids是从state.ids = val;取得值,而不是loaclStroage
    setIds(state, val) {
      state.ids = val;
      db.save("relatedIds", val);
    }
  }
};

JSON.parse(localStorage.getItem(projectName + “_” + key)) 得到的值的类型应该与存入时候的值的类型相同,因为它是将存储在本地存储中的 JSON 字符串解析为 JavaScript 对象。如果存入时的值是一个 JavaScript 对象,则解析后得到的值也应该是一个 JavaScript 对象。但是如果存入时的值是一个字符串、数字或布尔值等基本数据类型,则解析后得到的值也应该是相应的基本数据类型。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值