reactjs - prevstate 有什么用?
问题描述
当我们不使用 prevstate 时,代码是这样的:
state = {
count: 0
}
updateCount = () => {
this.setState({ count: this.state.count + 1}); \\count = 0 + 1 = 1
this.setState({ count: this.state.count + 1});
this.setState({ count: this.state.count + 1});
this.setState({ count: this.state.count + 1});
}
所以在这个永远 setState 当前计数值被使用。因此,在第一个 setState 中 this.state.count = 0 + 1 = 1。然后在第二个 setState 中,this.state.count 的值将是 1,因此它将增加 1,即 this.state.count = 1 + 1 = 2;
但事实并非如此。为什么?那么为什么我们需要这样的prestate:
updateCount = () => {
this.setState(prevstate => ({ count: prevstate.count + 1}));
this.setState(prevstate => ({ count: prevstate.count + 1}));
this.setState(prevstate => ({ count: prevstate.count + 1}));
this.setState(prevstate => ({ count: prevstate.count + 1}));
}
解决方案
推荐阅读
- java - 如何将 MouseMotionListener 与非 GUI 相关类一起使用?
- api - 使用 Hasura meatadat API 创建新角色
- websphere - SRVE0293E: [Servlet 错误]-[门户]: java.lang.NoClassDefFoundError: com.ibm.wps.cei.DebugController
- c# - 在 p2p 网络中连接到公共 Internet 上的另一个节点
- css - 让 Bootstrap Carousel 无缝移动
- kubernetes - 用户“system:serviceaccount:default:flink”无法在集群范围内列出 API 组“”中的资源“节点”
- google-cloud-iam - 通过 IAM 添加编辑器的问题
- angular - `querySelectorAll` - 使用数据选择器查询时返回空值
- oracle - Azure 中的 Oracle Database 19c 监控
- r - 根据 r 中的另一列更新最新列