2017-10-11 4 views
1

Essayer de comprendre comment je peux revenir à la page précédente. J'utilise [react-router-v4][1]react-router (v4) comment revenir en arrière?

Ceci 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 fais simplement:

Cependant, comment puis-je revenir à la page précédente? Essayé peu de choses comme mentionné ci-dessous, mais pas de chance: 1. this.props.history.goBack();

donne l'erreur:

TypeError: null is not an object (evaluating 'this.props')

  1. this.context.router.goBack();

donne l'erreur:

TypeError: null is not an object (evaluating 'this.context')

  1. this.props.history.push('/');

donne l'erreur:

TypeError: null is not an object (evaluating 'this.props')

affichage du code Page1 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">&lt; Back</Button> 
     </div> 
     <div className="navigationButtonsRight"> 
      <Button onClick={this.handleNext} bsStyle="success">Next &gt;</Button> 
     </div> 

     </div> 
    ); 
    } 


export default Page1; 
+0

Quelles sont les quelques petites choses que vous avez essayées? –

+0

essayer 'this.props.history.goBack();' https://github.com/ReactTraining/react-router/blob/dc2149ec0c63bfc95b71e40c81431e34cfbfeda9/packages/react-router-redux/modules/actions.js#L27 – baskax

+0

@VivekDoshi: Ajouté ce que j'ai essayé avec les erreurs que j'ai rencontrées –

Répondre

10

Je pense que la question est à la liaison:

constructor(props){ 
    super(props); 
    this.goBack = this.goBack.bind(this); // i think you are missing this 
} 

goBack(){ 
    this.props.history.goBack(); 
} 

..... 

<button onClick={this.goBack}>Go Back</button> 

Comme je l'ai pris avant que vous avez publié le code:

constructor(props) { 
    super(props); 
    this.handleNext = this.handleNext.bind(this); 
    this.handleBack = this.handleBack.bind(this); // you are missing this line 
} 
0

Essayez:

this.props.router.goBack() 
+0

Cela me donne l'erreur, s'il vous plaît voir la question mise à jour ci-dessus –

+0

où obtenez-vous votre routeur ou l'histoire prop à partir de? Assurez-vous que vous l'obtenez à partir de votre composant ou page parent (ie console.log (this.props) sur la fonction de rendu et vérifiez que vous imprimez l'accessoire du routeur afin de pouvoir l'utiliser. – Rodius

+0

Ceci ne fournit pas de réponse à la question Une fois que vous aurez suffisamment de [réputation] (https://stackoverflow.com/help/whats-reputation) vous pourrez [commenter n'importe quel post] (https://stackoverflow.com/help/privileges/comment), mais plutôt [fournir des réponses qui ne nécessitent pas de clarification de la part du demandeur] (https://meta.stackexchange.com/questions/214173/why -do-je-besoin-50-réputation-à-commentaire-ce-que-je-fais-à la place.) - [De l'examen] (/ review/low-quality-posts/17590666) –

0

Pouvez-vous fournir le code où vous utilisez this.props.history.push('/Page2');?

Avez-vous essayé la méthode goBack()?

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

+0

Cela me donne l'erreur, s'il vous plaît voir la question mise à jour ci-dessus –

+0

Pouvez-vous également ajouter le code autour de 'this.props.history.push ('/ Page2');'? Si 'this.props' n'est pas null là, cela devrait fonctionner –

+0

Rien vraiment, je viens d'appeler ceci sur le bouton Retour de mon composant –