javascript - React setState 不更新状态
问题描述
我目前在我的项目中使用 react-modal,我可能从其他组件打开和关闭它时遇到问题。
class MainComponent {
constructor() {
this.state = {reportOpen: false};
}
closeReport = (e) => {
this.setState({reportOpen: false}, () =>
console.log(this.state.reportOpen)); // This line print true !!!
}
render() {
return (
<Button onClick={(e) => this.setState({reportOpen: true})}/>
<ReportModal isOpen={this.state.reportOpen} onClose= .
{this.closeReport}/>
)
}
}
// Modal
class ReportModal {
static getDerivedStateFromProps(nextProps, prevState) {
if (nextProps.isOpen !== prevState.isOpen) {
return ({isOpen: nextProps.isOpen});
}
else {
return null;
}
}
render() {
return <Modal isOpen={this.state.isOpen}
onRequestClose={this.props.onClose}
shouldCloseOnOverlayClick={true}
shouldCloseOnEsc={true}/>
}
}
由于提到的问题,一旦我打开它,我就无法关闭它。请帮我解决这里的问题。谢谢你的帮助。
解决方案
类声明中缺少
extends React.Component
。构造函数中缺少
super(props);
调用。
推荐阅读
- microsoft-graph-api - 401 响应,正文中包含 retryAfterSeconds(受限制?)MS Graph API 请求
- javascript - 如何在数据库和应用程序之间共享枚举?
- django-forms - 如何编写单元测试来检查 django 模型表单是否有效?
- javascript - 如何正确实现严格比较和取模运算符
- android - 使用下载管理器将文件保存到内部存储的隐藏文件夹中
- node.js - 通过 Phantomjs 自动运行包含“Tableau Javascript API 代码”的 html
- linux - 如何在 Linux 中提取具有多种模式的线条?
- scala - Oozie 协调器为一项操作创建 12 个工作流作业
- excel - 在一个范围内选择最大和最小日期时间
- sql - 将源与目标进行比较,然后在合并中再次将目标与源进行比较?