要件: #infoルートをプッシュしてフルスクリーンオーバーレイコンポーネントを表示するボタンをクリックすると、モーダルを閉じるか、戻るボタンを押すと、前のページに移動するのではなく、オーバーレイを閉じる必要があります。React Router make back back forward
1ページ目、2ページ目。ボタンを押して、オーバーレイを表示します。戻るまたは閉じるオーバーレイは、オーバーレイを閉じてページ2に残ります。
問題:ページ2に戻ると、オーバーレイルートに移動するための転送履歴が残っています。
私は方法を探しており、転送履歴を削除するソリューションを見つけることができませんでした。
私のコードのようなある:オーバーレイが表示されている場合:
this.props.router.push(this.props.router.getCurrentLocation().pathname + '#info')
そしてIはoverylayが閉じられたときGOBACKするコードを持っているかのボタンを背面押したとき:
onBackButtonEvent() {
if (this.props.renderOverlay) {
this.setState({
overlayRoutePushed: false
})
this.props.closeOverlay()
}
}
closeOverylayAndBack() {
this.setState({
overlayRoutePushed: false
})
this.props.closeOverlay()
this.props.router.goBack()
}
componentDidMount() {
window.onpopstate = this.onBackButtonEvent
}
検出するために戻るボタンとwindow.onpopstate私はルートをプッシュする必要があります。オーバーレイが表示されているときに#infoと置き換えて、戻ってきたときにオーバーレイを閉じるだけでしたが、route.goBack()のデフォルトを防ぐことはできません。
アイデア?