Reactjs 设置反应状态的不同方法

Reactjs 设置反应状态的不同方法,reactjs,react-state,Reactjs,React State,现在,我一直在使用示例2,在3年多的实践中从未遇到过错误 为什么示例#2错了,有人能给出一个反例,在控制台中实际显示一个错误吗?来自媒体的post示例和来自post的解决方案 他们在文章中声称: 无法保证对setState调用的同步操作 为了提高性能,可以对调用进行批处理 例2->。状态值可能不是最新的。不会有任何控制台错误,根据某些情况,您可能无法获取最新状态value@Kiranvj是的,这正是我今天读到的地方,它是错误的,但正如我所说,如果它是如此错误,请在我改变所有代码之前,给我一个反例

现在,我一直在使用示例2,在3年多的实践中从未遇到过错误

为什么示例#2错了,有人能给出一个反例,在控制台中实际显示一个错误吗?

来自媒体的post示例和来自post的解决方案

他们在文章中声称:

无法保证对setState调用的同步操作 为了提高性能,可以对调用进行批处理


例2->。状态值可能不是最新的。不会有任何控制台错误,根据某些情况,您可能无法获取最新状态value@Kiranvj是的,这正是我今天读到的地方,它是错误的,但正如我所说,如果它是如此错误,请在我改变所有代码之前,给我一个反例。反例总是会出现的。要获得不一致的行为,应使用涉及多个并发道具和状态更改的场景进行检查。不仅在并发场景中,而且在需要记忆某些内容(函数、值等)的任何时候都要进行检查。
//Example #1 - I KNOW THIS IS WRONG
this.state.myCount = this.state.myCount + 42;

//Example #2 - Why is this wrong ?
this.setState({
    myCount: this.state.myCount + 42, 
})

//Example #3 - proper way, as per React docs 
this.setState( (prevState, props) => ({
  myCount: prevState.myCount + 42
}));
// assuming state.count === 0
this.setState({count: state.count + 1});
this.setState({count: state.count + 1});
this.setState({count: state.count + 1});
// state.count === 1, not 3

//Solution
this.setState((prevState, props) => ({
  count: prevState.count + props.increment
}));