童话里做英雄529 2023-04-27 15:11 采纳率: 66.7%
浏览 31
已结题

react赋值失败的问题

 const [pricelist, setPricelist] = useState([]);
//下面的实在一个方法里面实现
     let a = []
      for (let i = 0; i < params.data.priceList.length; i++) {
        a.push({
          index: i,
          base_price: params.data.priceList[i]["base_price"],
          max_floor: params.data.priceList[i]["max_floor"],
          min_floor: params.data.priceList[i]["min_floor"]
        })

      }
      console.log("a", a);
      setPricelist(JSON.parse(JSON.stringify(a)))
      console.log("pricelist1", pricelist);
      setPricelist(a)
      console.log("pricelist2", pricelist)

打印出来的情况如下:

img

pricelist1和 pricelist2都没有数据,赋值为什么会失败?

  • 写回答

2条回答 默认 最新

  • RivaJ 2023-04-27 15:30
    关注

    因为setState是异步的,你直接调用没那么快出来,可以尝试第二个参数:

    setPricelist(JSON.parse(JSON.stringify(a)), () => {console.log("pricelist1", pricelist)})
    

    回调函数将在状态更新后调用

    评论

报告相同问题?

问题事件

  • 已结题 (查看结题原因) 5月4日
  • 创建了问题 4月27日