2017-02-15 19 views
2

反応ルータではdocumentationonEnterフックが処理方法を指定しましたが、onLeaveの場合は例がありません。私の質問は、ユーザーがページを適切に残したいことを確認する方法です。反応ルータではonEnterはonLeaveと同じです

どちらの場合も、ユーザがcancelまたはokをクリックしたかどうかにかかわらず、次のコードに従うと、ページを離れます。しかしonEnterフックはロジックごとにうまく動作します。

const checkEnterAbout = (nextState, replace, callback) => { 
    if(!confirm('do you want to enter really!!!')){ 
     replace(`/`); 
    }else{ 
     callback(); 
    } 

} 

const checkLeaveAbout = (prevState) => { 
    console.log(prevState); 
    return confirm("Are you sure you want to leave this page"); 
} 

<Route path="/about" component={About} onEnter={checkEnterAbout} onLeave={checkLeaveAbout} /> 

withRouterガイドを確認したときにもやってみました。その私に

Failed prop type: Invalid prop `component` supplied to `Route`. 
    in Route 
+0

あなたは**すべての**ページのユーザー葉に確認をしたいですか?それともちょうど約ページ? – samvv

+0

ちょうど約 – owaishanif786

答えて

2

のエラーrouterWillLeaveと呼ばれるフックがありますを与え、ここでは例です:

https://github.com/ReactTraining/react-router/blob/master/docs/guides/ConfirmingNavigation.md

+0

私は試みましたが、luck checkは答えを編集しました – owaishanif786

+0

export default withRouter(About)をmodule.exports = withRouter(About)に変更した後。それは働いている。なぜonLeaveとonEnter APIのインターフェイスが同じではないのだろうか。 1つはcomponentDidMountを使って作業し、もう1つはonEnterを使って作業しています! – owaishanif786

関連する問題