réagir-routeur (v4) comment revenir en arrière?
À essayer de comprendre comment je peux revenir à la page précédente. Je suis à l'aide de [react-router-v4][1]
C'est le code que j'ai configuré dans ma première page de destination:
<Router>
<div>
<Link to="/"><div className="routerStyle"><Glyphicon glyph="home" /></div></Link>
<Route exact path="/" component={Page1}/>
<Route path="/Page2" component={Page2}/>
<Route path="/Page3" component={Page3}/>
</div>
</Router>
Afin de transmettre aux pages suivantes, je n'ai tout simplement:
this.props.history.push('/Page2');
Cependant, comment puis-je revenir à la page précédente?
Essayé quelques petites choses comme mentionné ci-dessous, mais pas de chance:
1. this.props.history.goBack();
Donne une erreur:
TypeError: null n'est pas un objet (l'évaluation de cela.accessoires')
this.context.router.goBack();
Donne une erreur:
TypeError: null n'est pas un objet (l'évaluation de cela.contexte")
this.props.history.push('/');
Donne une erreur:
TypeError: null n'est pas un objet (l'évaluation de cela.accessoires')
Affichage de la Page1
code ci-dessous:
import React, {Component} from 'react';
import {Button} from 'react-bootstrap';
class Page1 extends Component {
constructor(props) {
super(props);
this.handleNext = this.handleNext.bind(this);
}
handleNext() {
this.props.history.push('/page2');
}
handleBack() {
this.props.history.push('/');
}
/*
* Main render method of this class
*/
render() {
return (
<div>
{/* some component code */}
<div className="navigationButtonsLeft">
<Button onClick={this.handleBack} bsStyle="success">< Back</Button>
</div>
<div className="navigationButtonsRight">
<Button onClick={this.handleNext} bsStyle="success">Next ></Button>
</div>
</div>
);
}
export default Page1;
- Quels sont les quelques choses, vous avez essayé?
- essayez
this.props.history.goBack();
github.com/ReactTraining/react-router/blob/... - Ajouté ce que j'ai essayé avec les erreurs que j'ai rencontré
- vous s'il vous plaît poster le code complet, à partir duquel vous essayez d'exécuter cette.accessoires de jeu.l'histoire.goBack();?
- Fait, veuillez jeter un oeil, merci
- Veuillez vérifier ma réponse vous avez oublié de ce.handleBack = ce.handleBack.bind(ce);
- Merci, ça a fonctionné 🙂
Vous devez vous connecter pour publier un commentaire.
Je pense que le problème est avec la liaison:
Que j'ai pris avant que vous avez posté le code:
C'est la bonne solution pour réagir-routeur v4
Mais une chose que vous devez garder à l'esprit est que vous devez vous assurer que ce.accessoires de jeu.l'histoire est existé.
Cela signifie que vous devez appeler cette fonction
this.props.history.goBack();
à l'intérieur du composant qui est enveloppé par < Route/>Si vous appelez cette fonction dans un composant qui plus profonde dans le composant de l'arbre, il ne fonctionnera pas.
EDIT:
Si vous voulez avoir l'histoire de l'objet dans le composant qui est plus profond dans la composante de l'arbre (ce qui n'est pas emballé par < Route>), vous pouvez faire quelque chose comme ceci:
Pouvez-vous fournir le code où vous utilisez
this.props.history.push('/Page2');
?Avez-vous essayé le goBack() la méthode?
this.props.history.goBack();
Il est répertorié ici https://reacttraining.com/react-router/web/api/history
Avec un exemple vivant ici https://reacttraining.com/react-router/web/example/modal-gallery
this.props.history.push('/Page2');
? Sithis.props
n'est pas null, il devrait fonctionner.Pour une utilisation avec Réagissent Routeur v4 et une composante fonctionnelle n'importe où dans l'arborescence dom.
Essayer:
Chaque réponse ici a des parties de la solution totale. Voici la solution complète que j'ai utilisé pour le faire fonctionner à l'intérieur des composants plus profond que où la Route a été utilisée:
^ Vous avez besoin que la deuxième ligne de fonction d'importation et d'exportation de composants au bas de la page.
^ Requis la flèche en fonction de vs simplement onClick={présent.accessoires de jeu.l'histoire.goBack()}
^ envelopper votre composant du nom de 'withRouter()'
Simplement utiliser