2017-11-03 14 views
0

ユーザーがブラウザで[戻る]ボタンをクリックすると、カスタムモーダルボックスを表示する方法。 私はすでにモーダルボックスがフィールドの変更を扱っているので、私はプロンプトのwindow.confirmを使いたくありません。ルート小道具にアクセスするために反応ルータv4の戻るボタンにモーダルボックスを表示するには?

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機能付きコンテナをラップする必要があります。

+0

コードを表示しますか?私たちはあなたの心を読むことができません... –

+1

これをチェックしてくださいhttps://stackoverflow.com/questions/32841757/detecting-user-leaving-page/45869459#45869459 –

答えて

0

はこのような何かを試してみてください、あなたはいくつかのページを持っており、それらのすべては、コンテナコンポーネント内にラップされているとしましょう。

+0

handleBackClickはイベントを受信して​​いますが、preventDefaultは機能していません。 –

+0

申し訳ございません、preventDefaultを安全に削除できます。そして、バインドhandleBackClick(編集) – krmzv

+0

しかし、ページが移動します。私はユーザーがモーダルボックスで確認するまでナビゲーションをブロックしたい –

関連する問題