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)
打印出来的情况如下:
pricelist1和 pricelist2都没有数据,赋值为什么会失败?
因为setState是异步的,你直接调用没那么快出来,可以尝试第二个参数:
setPricelist(JSON.parse(JSON.stringify(a)), () => {console.log("pricelist1", pricelist)})
回调函数将在状态更新后调用
useState 只能在函数组件的顶层作用域中使用,不能在循环、条件语句、嵌套函数等作用域中使用。
useEffect(()=>{
//下面的实在一个方法里面实现
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)
})
你直接这样写 不会报错吗? 我这都直接报错 .需要写在 useffetc里