【发布时间】:2020-05-13 15:48:02
【问题描述】:
我遇到了麻烦
我的BrowseModalUpload 组件中确实有一个弹出窗口,并且我将状态设为
class BrowseModalUpload extends React.Component {
constructor(props) {
super(props)
this.state = {
modalIsOpen: this.props.browseAssetComponent ? this.props.browseAssetComponent : false,
...
}}
所以最初没有弹出窗口,当您单击一个链接时,setState modalIsOpen 为 true 并且模态打开 - 这是正常流程
当我点击关闭窗口时,它 setState modalIsOpen 为假。
所以我只是点击弹出窗口,然后点击关闭按钮,现在我从不同组件中点击这个弹出窗口,将 propbrowseAssetComponent 设置为 true,它没有打开
模态代码是这样的
<Modal transparent isOpen={this.state.modalIsOpen} onAfterOpen={this.afterOpenModal} onRequestClose={this.closeModal} ariaHideApp={false}>
this.state.modalIsOpen 仍然是假的,当我从另一个组件调用它并且这个弹出窗口没有出现时,它不会被更新。
如果你们需要更多信息,请告诉我。 任何帮助都可以解决我的障碍
【问题讨论】:
-
您是否要还原 this.closeModal 中的布尔值?你能发布整个组件吗?
-
closeModal() { this.setState({ modalIsOpen: false }); } @User965207
-
到目前为止我同意下面的答案,但为了您的理解,它没有被更新的原因是因为当 React 创建组件时它会调用构造函数。当您将新道具传递给组件时,不会调用构造函数,因为该组件已经实例化。取而代之的是 React.Component 类的
componentDidUpdate方法是使用先前和当前的道具调用的。 -
@MarioSubotic 那么理想的解决方案是什么
-
你能在代码沙盒中创建一个最小的可重现示例吗?
标签: reactjs state react-props