2017-02-15 5 views
2

В ответном маршрутизаторе documentation для onEnter крючок указал, как обращаться, но для 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

Я пробовал, но не проверил проверку ответа – owaishanif786

+0

после изменения экспорта по умолчанию withRouter (About) в module.exports = withRouter (About); это работает. интересно, почему интерфейс onLeave и onEnter api не одинаковый. один работает через componentDidMount, а другой - с помощью onEnter !!! – owaishanif786