【发布时间】:2019-08-24 23:38:38
【问题描述】:
我是 React 新手,只是对 setState 方法有疑问。假设我们有一个组件:
class MyApp extends React.Component {
state = {
count: 3
};
Increment = () => {
this.setState((prevState) => ({
options: prevState.count + 1)
}));
}
}
那么为什么我们必须在setState 方法中使用prevState?为什么我们不能这样做:
this.setState(() => ({
options: this.state.count + 1)
}));
【问题讨论】:
-
尝试多次调用 setState 命令并亲自查看结果。
-
"React 可能将多个 setState() 调用批处理到单个更新中以提高性能。因为 this.props 和 this.state 可能会异步更新,所以您不应依赖它们的值来计算下一个状态。 "
-
通常这无关紧要,因为 React 总是会批处理从同一个事件侦听器触发的多个
setStates。也就是说,每当您想设置依赖于旧状态的新状态时,使用回调方法总是一个好主意。 -
@clint_milner 两种方法都不会直接改变状态。两者都很好,一个可以被认为是比另一个“更好的做法”。
标签: javascript reactjs