Maison  >  Article  >  interface Web  >  Raisons pour lesquelles l'historique v4 n'est pas accessible

Raisons pour lesquelles l'historique v4 n'est pas accessible

亚连
亚连original
2018-06-13 10:28:072154parcourir

Cet article vous présente principalement la solution au problème selon lequel l'historique de réaction-router/react-router-dom v4 n'est pas accessible. L'article le présente en détail à travers un exemple de code, qui constituera une certaine référence pour l'étude de chacun ou. travail. Valeur, amis dans le besoin viennent apprendre ensemble.

Préface

J'ai récemment mis à niveau mon React-Router Lors de l'utilisation de React-Router-dom, le sous-composant utilise this.props. l'historique est introuvable. J'ai regardé la documentation officielle et je ne l'ai pas trouvé pendant longtemps, car je saute sur la page une fois l'exécution asynchrone terminée, je dois utiliser push ou replace. Les connaissances domestiques sont copiées sur moi. J'ai copié les vôtres, ce sont toutes des conneries. Je ne peux qu'aller sur Google et

a finalement trouvé la réponse : (voir le code en un coup d'œil)

Solution

Première utilisation du routeur

import React, { Component } from 'react';
import { BrowserRouter, Route } from 'react-router-dom';
import { Provider } from 'mobx-react';
import stores from '../store/index';
import Bundle from '../components/bundle';
import Hello from 'bundle-loader?lazy!../components/hello.jsx';
// 这是按需加载,对于现在讨论的问题没有影响
const HelloAPP = () => (
 <Bundle load={Hello}>
  {(Hello) => <Hello />}
 </Bundle>
);
export default class App extends Component {
 constructor(props) {
 super(props);
 }
 render() {
 return (
  <Provider { ...stores }>
  <BrowserRouter basename="/">
   <Route path="/" component={HelloAPP}/>
  </BrowserRouter>
  </Provider>
 );
 };
}

Puis l'historique d'utilisation des sous-composants

import React, { Component } from &#39;react&#39;;
// 需要这步,你要npm 这个,
import PropTypes from &#39;prop-types&#39;;
export default class Hello extends Component {
 constructor(props) {
 super(props);
 }
 // 这一步是重点
 static contextTypes = {
 router: PropTypes.object.isRequired
 };
 test = () => {
 console.log(this.context);
 setTimeout(() => {
  this.context.router.history.push("/otherPath");
 }, 1000);
 };
 render() {
 return (
  <p>
  <button onClick={this.test}>按钮</button>
  </p>
 );
 };
}

Regardons ceci.contexte :

Ce qui précède est que je l'ai compilé pour tout le monde, j'espère qu'il sera utile à tout le monde à l'avenir.

Articles connexes :

Comment utiliser node.js et d'autres technologies pour implémenter la fonction de connexion et d'enregistrement ?

Comment utiliser le filtre dans vue

Problèmes liés à l'évitement de texte dans les algorithmes front-end (tutoriel détaillé)

Ce qui précède est le contenu détaillé de. pour plus d'informations, suivez d'autres articles connexes sur le site Web de PHP en chinois!

Déclaration:
Le contenu de cet article est volontairement contribué par les internautes et les droits d'auteur appartiennent à l'auteur original. Ce site n'assume aucune responsabilité légale correspondante. Si vous trouvez un contenu suspecté de plagiat ou de contrefaçon, veuillez contacter admin@php.cn