javascript - this.setState 在 this.setState 的回调中没有设置状态
问题描述
我有 2 个列表项,它们使用相同的<ListItem />
组件this.props.a = true
并this.props.b = true
从父组件传递给它(提到有 2 个,因为我不确定是否会弄乱任何东西,但它们每个都应该有自己的独立组件状态)。
在<ListItem />
组件中,我有一个_handleOnClick
功能。当_handleOnClick
函数被触发时,检查组件状态会显示a: false
,b:true
尽管我看到got here
在我的控制台中登录。
我本来希望this.setState({ b: false })
在回调中被调用,并且状态更改为a: false
and b:false
。我错过了什么?
export default class ListItem extends PureComponent {
state = {
a: this.props.a, //this.props.a is true
b: this.props.b, //this.props.b is true
};
_handleOnClick = () => {
this.setState({ a: !this.state.a }, () => {
if (!this.state.a && this.state.b) {
console.log('got here')
this.setState({ b: false })
}
});
};
...
}
解决方案
你为什么不试试这个
this.setState((prevState, props) => {
//add your stuff here by matching it with previous state
})
推荐阅读
- c# - 使用 C# 中两个括号之间的所有字符作为分隔符拆分字符串
- google-cloud-platform - 列出按时间排序的 Google Cloud 资源
- google-chrome-extension - 带有 Chrome 扩展程序的 Cookie SameSite
- python - Python:在硒中加载所有网页内容
- python-3.x - 使用 ElementTree 解析 XML 时如何获取子节点的文本值
- azure-api-management - API 管理条件流策略
- asp.net-core - 在项目中创建文件夹的 dotnet cli 未添加到解决方案中
- python - 为什么这个情节是平的?
- arrays - MongoDB 不在任何数组中(嵌套数组)
- excel - 文本框搜索栏和列表框 - 4