onEnter pas appelé à Réagir-Routeur
Ok, j'en ai marre d'essayer.
Le onEnter
méthode ne fonctionne pas. Une idée de pourquoi?
//Authentication "before" filter
function requireAuth(nextState, replace){
console.log("called"); //=> Is not triggered at all
if (!isLoggedIn()) {
replace({
pathname: '/front'
})
}
}
//Render the app
render(
<Provider store={store}>
<Router history={history}>
<App>
<Switch>
<Route path="/front" component={Front} />
<Route path="/home" component={Home} onEnter={requireAuth} />
<Route exact path="/" component={Home} onEnter={requireAuth} />
<Route path="*" component={NoMatch} />
</Switch>
</App>
</Router>
</Provider>,
document.getElementById("lf-app")
Edit:
La méthode est exécutée lorsque j'appelle onEnter={requireAuth()}
, mais ce n'est évidemment pas le but, et j'ai aussi de ne pas obtenir les paramètres désirés.
- Qui réagissent-routeur version utilisez-vous?
Vous devez vous connecter pour publier un commentaire.
onEnter
n'existe plus surreact-router-4
. Vous devez utiliser<Route render={ ... } />
pour obtenir votre fonctionnalité désirée. Je croisRedirect
exemple a votre scénario spécifique. Je l'ai modifié ci-dessous pour correspondre à la vôtre.Switch
composant puisRedirect
doit être rendu comme prévu. Toutefois, si vous n'êtes pas à l'aide deSwitch
,Redirect
ne sera pas rendu (que je suppose a été votre cas d'utilisation).getState()
méthode qui renvoie l'état actuel du magasin:import store from '../store/store.index'; // or wherever your initialized store is exported
const { getState } = store;
const isLoggedIn = getState().app.isLoggedIn; // Adjust according to your state tree
render={ () => { isLoggedIn().then( res => { return res ? ( <Redirect to="/front"/> ) : ( <Home /> )}) }}
De réagir-routeur-v4
onEnter
,onUpdate
, etonLeave
est supprimé,selon la documentation sur la migration à partir de v2/v3 à la v4: