【发布时间】:2020-02-25 16:04:00
【问题描述】:
试图通过组件中的内部函数(setVisible) 更新状态变量('visible')。我检查了tutorıal 并做了同样的事情,但在初始化状态后它没有更新。 Sandobx 链接here.
当用户单击 ShowModal 按钮时,props.visible 为真。但是功能组件中可见的值仍然是错误的。 (我已经检查了调试器上的内容)
代码:
import Modal from '../Helpers/AppModal'
class Streams extends Component {
constructor(props) {
super(props)
this.state = { showModal: false }
}
componentDidMount() {
this.props.getStreams()
}
showDeleteModal = (isShow) =>
{
this.setState({ showModal: isShow });
}
onClickBackdrop = () => {this.setState({ showModal: false });}
render() {
return (
<div>
<button onClick={()=> this.showDeleteModal(true)} className="btn btn-danger">Delete</button>
<Modal visible={this.state.showModal} onClickBackdrop={this.onClickBackdrop} />
</div>
)
}
}
AppModal.js:
const AppModal = (props) => {
const [visible, setVisible] = useState(props.visible)
useEffect(() =>{
setVisible(props.visible)
},[props.visible])
debugger
return (
<Modal visible={visible} fade={true} onClickBackdrop={props.onClickBackdrop}>
<div className="modal-header">
<h5 className="modal-title">{props.title}</h5>
</div>
<div className="modal-body">
{props.body}
</div>
<div className="modal-footer">
<React.Fragment>
<button type="button" className="btn btn-default" onClick={()=>setVisible(false)}>
Close
</button>
</React.Fragment>
</div>
</Modal>
)
}
【问题讨论】:
-
我认为你应该这样尝试:
setVisible(false) -
@SouvikGhosh 确实有问题
标签: reactjs react-hooks