为什么使用prevState替换列表值React JS

时间:2020-04-26 11:44:14

标签: react-native

我只想对此进行澄清

state = {
    foodList: [],
    currentFoodItem: null,
}

onFoodsReceived = (foodList) => {
    console.log(foodList);
    this.setState(prevState => ({
        foodList: prevState.foodList = foodList
    }));
}

在上面的代码中,当您可以使用以下代码时,它使用prevState替换列表值。为什么有些人使用prevstate而另一些人不替换列表值

onFoodsReceived = (foodList) => {
    console.log(foodList);
    this.setState({
        foodList: foodList
    }));
}

1 个答案:

答案 0 :(得分:0)

当我们想用最后一个状态的参数覆盖当前状态时使用。

来自React docs:

根据React文档,“ React可能将多个setState()调用批处理到单个更新中以提高性能。由于this.propsthis.state可能是异步更新的,因此您不应该依赖它们的值用于计算下一个状态。”

“要解决此问题,请使用第二种形式的setState()接受一个函数而不是一个对象。该函数将以先前的状态作为第一个参数,并在应用更新时将props用作第二个参数”

Sources