【发布时间】:2018-04-16 04:32:06
【问题描述】:
如果用户在浏览器中单击返回按钮,如何显示自定义模式框。
我已经有一个模态框来处理字段更改,我不想使用 Prompt 的 window.confirm 。
【问题讨论】:
-
显示一些代码?我们无法读懂你的想法......
标签: javascript reactjs react-router
如果用户在浏览器中单击返回按钮,如何显示自定义模式框。
我已经有一个模态框来处理字段更改,我不想使用 Prompt 的 window.confirm 。
【问题讨论】:
标签: javascript reactjs react-router
假设您有一些页面,并且所有页面都包装在 Container 组件中,请尝试以下操作:
class Container extends Component {
state = {
showModal: false
}
handleBackClick(){
this.props.history.push(this.props.location.pathname)
this.setState({showModal: true})
}
componentDidMount(){
window.onpopstate = this.handleBackClick.bind(this)
}
render(){
return(
<YourModal isOpen={this.state.showModal} ... />
)
}
}
export default withRouter(Container)
您必须使用 withRouter 函数包装 Container 才能访问路由道具。
【讨论】:
这是我的 goBackButtonHandler 函数。
此函数检查是否有任何表单输入字段是脏的。如果是,我会显示确认框,或者我只是返回上一页。我认为您可以对代码使用类似的逻辑。
在我的应用中,我有返回和取消按钮,因此对于应用内导航和浏览器/设备导航,我只需调用 React History API 即可
history.goBack();
这会触发事件,如果我的字段脏了,我可以看到模态框。而已!希望这会有所帮助。
【讨论】: