2017-08-31 1 views
0

J'ai suivi la documentation de Redirect de react-router-dom. En ce moment, j'ai un composant comme ça rend les éléments suivants:Utilisation de la redirection de react-router-dom avec l'état

return <Redirect to={{ pathname: '/login', state: { previousPath: path } }} />; 

Cependant, je ne suis pas sûr de savoir comment accéder previousPath dans l'état de mon nouveau chemin. La documentation n'est pas claire à ce sujet. Comment accéder au previousPath?

Répondre

1

L'un de vos composants parents doit être Route avec les accessoires: correspondance, emplacement, historique. Vous devriez pouvoir utiliser l'état que vous avez créé avec props.location.state pour accéder à votre valeur previousPath.

Voir location dans les docs du routeur React.

+0

Merci Julian. Je suis capable de mettre 'previousPath' à la bonne valeur ... cependant, je me demande comment j'accède à' previousPath' dans un autre composant? c'est-à-dire le composant rendu à partir de la redirection – frogbandit

0

a résolu le problème en utilisant ownProps dans mapStateToProps:

Dans mon composant Login (où le Redirect va), j'ai ajouté à mon mapStateToProps:

const mapStateToProps = (state, ownProps) => ({ 
    ... 
    previousPath: ownProps.location.state.previousPath, 
}); 

Et puis dans mes accessoires, maintenant j'ai accès à previousPath.

+0

mapStateToProps est de redux: P, si vous regardez ma réponse mise à jour, vous verrez que je vous ai battu au punch d'une demi-heure –