【发布时间】:2020-11-07 05:31:04
【问题描述】:
我有 2 个类来提供模式对话框功能:
import React from 'react'
import Modal from 'react-modal'
export default class ModalBase extends React.Component {
state = { show:false }
handleOpen = opts => {
this.setState( { ...opts, show:true } )
console.info( 'ModalBase handleOpen', this.constructor.name, 'show', this.state.show )
}
handleClose = () => this.setState( { show:false } )
render() {
console.info( 'ModalBase render show', this.state.show )
return <Modal isOpen={this.state.show} onRequestClose={this.handleClose} className="Modal" overlayClassName="Overlay">
{this.props.children}
</Modal>
}
}
和
export default class InfoPopup extends ModalBase {
state = { ...this.state, tech:{} }
render() {
console.info('InfoPopup render show', this.state.show)
return (
<ModalBase>
<div/><div/>
</ModalBase>
)
}
}
当我调用InfoPopup.handleOpen({a:42}) 时,控制台中会显示以下内容:
ModalBase handleOpen InfoPopup show true
InfoPopup render show true
ModalBase render show false
所以,ModalBase 的 state.show 没有改变,因此弹出窗口没有显示。
我应该如何正确地将状态传播到封闭的父对象?
TIA
【问题讨论】:
标签: reactjs modal-dialog state