在vuex中对数组对象合并或添加属性后,在组件中直接调用渲染报错,数组对象显示{__ob__: Observer},解决方法

问题 :

vuex 中的代码

// 提取选择商品框的数据
  simOnSaleList(state) {
    let onSaleList = state.goodsList.onsale_yds_ls;
    // for (let i = 0; i < onSaleList.length; i++) {
    //   onSaleList[i].is_stock = "";
    // }
    let res = onSaleList.map(item => {
      return Object.assign(
        {},
        {
          is_stock: "",
          name: item.name,
          idyun: item.idyun,
          onsale_yd: item.onsale_yd
        }
      );
    });
    // console.log("onSaleList", onSaleList);
    let goodsOptions = [

      {
        is_stock: 0,
        name: "全部商品",
        idyun: "",
        onsale_yd: ""
      },
      {
        is_stock: 1,
        name: "有货商品",
        idyun: "",
        onsale_yd: ""
      },
      {
        is_stock: 2,
        name: "无货商品",
        idyun: "",
        onsale_yd: ""
      },
      {
        is_stock: 3,
        name: "APP上架",
        idyun: "",
        onsale_yd: ""
      },
      {
        is_stock: 4,
        name: "APP下架",
        idyun: "",
        onsale_yd: ""
      },
      ...res
    ];

    // console.log("商品类型", goodsOptions);
    return goodsOptions;
  }

在组件中直接调用渲染报错, map 找不到

在组件中查看该数组对象, 数组对象显示的是 {__ob__: Observer} 格式

解决方法 :

1. 将 vuex 中传过来的数组对象进行深拷贝

2. 组件中用空数组接收数据

3. 并且放入定时器中执行

mounted() {
  this.$nextTick(() => {
    setTimeout(() => {
      this.goodsOptions = JSON.parse(JSON.stringify(this.simOnSaleList));
    }, 500);
  });
},

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值