


Comment utiliser l'historique pour contrôler le routage dans React-Router (tutoriel détaillé)
Cet article vous présente principalement des informations pertinentes sur la façon dont React-Router v4 utilise l'historique pour contrôler les sauts de routage. L'article le présente en détail à travers un exemple de code, qui a une certaine valeur d'apprentissage de référence pour les études ou le travail de tous les amis qui en ont besoin. , suivez-moi et apprenez ensemble.
Avant-propos
Cela fait longtemps que React Router v4 n'est pas officiellement sorti. Cette semaine, j'ai mis à niveau une étagère React. J'utilise toujours la version v2.7.0, j'ai donc décidé de mettre également à niveau le routeur, juste pour "essayer quelque chose de nouveau"...
Il y a des rumeurs dans le monde selon lesquelles le responsable maintient actuellement les versions 2.x et 4.x. (ヾ(。ꏿ﹏ꏿ)ノ゙Hé, en ce moment, je crois que vous qui êtes aussi intelligents que moi découvrirez également, où est passé ReactRouter v3 ? Vous avez tout perdu ?? Bala est sorti du pétrin ??? Osez vous m'en donnez une parfaite ? Explication ! ?) En fait, la version 3.x n'introduit aucune nouveauté par rapport à la version 2.x, elle supprime juste les avertissements de certaines API obsolètes de la version 2.x. Selon le plan, lorsque de nouveaux projets sans bagage historique souhaitent utiliser la version stable de ReactRouter, ils doivent utiliser ReactRouter 3.x. La version 3.x est actuellement encore en phase bêta, mais sera officiellement publiée avant la version 4.x. Si vous utilisez déjà la version 2.x, la mise à niveau vers la version 3.x ne nécessitera aucune modification de code supplémentaire.
Problème
Lorsque nous utilisons React-Router v3, nous voulons sauter le chemin, nous le gérons généralement comme ça
Nous exportons l'historique du navigateur depuis React-Router.
Nous utilisons
browserHistory.push()
et d'autres méthodes pour opérer les sauts de routage.
Semblable à ce qui suit
import browserHistory from 'react-router'; export function addProduct(props) { return dispatch => axios.post(`xxx`, props, config) .then(response => { browserHistory.push('/cart'); //这里 }); }
mais !! Voici le problème, dans React-Router v4, l'exportation de l'historique du navigateur, etc. n'est pas fournie~~
Que faire ? Comment contrôler les sauts de routage ? ? ?
Solution
1. Utiliser withRouter
withRouter composant de haut niveau, qui fournit l'historique Laissez-vous utiliser~
import React from "react"; import {withRouter} from "react-router-dom"; class MyComponent extends React.Component { ... myFunction() { this.props.history.push("/some/Path"); } ... } export default withRouter(MyComponent);
C'est la méthode officielle recommandée. Mais cette méthode est un peu inconfortable à utiliser. Par exemple, lorsque l'on veut utiliser le routage en redux, on ne peut transmettre que l'historique dans le composant. .
Pour l'utiliser dans des scénarios comme le code du chapitre des questions, nous devons transmettre un paramètre d'historique du composant. . .
2. Utiliser le contexte
react-router v4 expose un objet routeur via Contex dans le composant Routeur~
Utiliser le contexte dans les composants enfants, nous peut obtenir l'objet routeur, comme dans l'exemple suivant~
import React from "react"; import PropTypes from "prop-types"; class MyComponent extends React.Component { static contextTypes = { router: PropTypes.object } constructor(props, context) { super(props, context); } ... myFunction() { this.context.router.history.push("/some/Path"); } ... }
Bien sûr, utilisez cette méthode avec prudence~essayez de ne pas l'utiliser. Parce que React ne recommande pas d'utiliser le contexte. Il pourrait être abandonné dans les versions futures.
3. hack
En fait, le problème est que l'historique que nous avons transmis au composant Routeur dans la v3 a été à nouveau exposé, nous permettant d'appeler ~~
Le composant BrowserRouter de React-Router v4 crée son propre historique et ne nous l'expose pas pour référence. Embarrassant ~
Nous ne pouvons pas utiliser le BrowserRouter recommandé et toujours utiliser le composant Router. Nous créons l’histoire nous-mêmes, et d’autres endroits appellent l’histoire que nous avons créée. Regardez le code~
Nous créons nous-mêmes un historique
// src/history.js import createHistory from 'history/createBrowserHistory'; export default createHistory();
Nous utilisons le composant Router
// src/index.js import { Router, Link, Route } from 'react-router-dom'; import history from './history'; ReactDOM.render( <Provider store={store}> <Router history={history}> ... </Router> </Provider>, document.getElementById('root'), );
Nous pouvons l'utiliser comme ça à d'autres endroits
import history from './history'; export function addProduct(props) { return dispatch => axios.post(`xxx`, props, config) .then(response => { history.push('/cart'); //这里 }); }
4. J'insiste pour utiliser BrowserRouter
En effet, React-Router v4 recommande d'utiliser le composant BrowserRouter, et dans la troisième solution, nous avons abandonné ce composant et sommes revenus Retrait de l'utilisation du composant Routeur.
Que faire. Si vous allez jeter un œil au code source de BrowserRouter, je pense que vous comprendrez tout d’un coup.
Le code source est très simple, il n'y a pas grand-chose. Nous écrivons entièrement nous-mêmes un composant BrowserRouter, puis remplaçons le composant Router dans la troisième solution. hé-hé.
Cela se termine ici. J'utilise actuellement la troisième méthode Bien que la première méthode soit officiellement recommandée, je pense qu'elle est plus difficile à utiliser. ~
Ce qui précède est ce que j'ai compilé pour tout le monde. J'espère que cela sera utile à tout le monde à l'avenir.
Articles associés :
Implémentation du framework MVVM en js (tutoriel détaillé)
Comment requireJS implémente-t-il un chargeur de module ?
JSsearch imitant Taobao (tutoriel détaillé)
Quelles sont les différences entre on et click en jquery ?
Quelles sont les méthodes de liaison de style dans Angular 2+
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!

Outils d'IA chauds

Undresser.AI Undress
Application basée sur l'IA pour créer des photos de nu réalistes

AI Clothes Remover
Outil d'IA en ligne pour supprimer les vêtements des photos.

Undress AI Tool
Images de déshabillage gratuites

Clothoff.io
Dissolvant de vêtements AI

AI Hentai Generator
Générez AI Hentai gratuitement.

Article chaud

Outils chauds

Bloc-notes++7.3.1
Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise
Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1
Puissant environnement de développement intégré PHP

Dreamweaver CS6
Outils de développement Web visuel

SublimeText3 version Mac
Logiciel d'édition de code au niveau de Dieu (SublimeText3)

Vivo n'a pas encore annoncé publiquement le nom du successeur du X100, mais divers teasers sur son profil officiel Weibo parlent déjà de la prochaine génération d'appareils photo phares, en particulier de la technologie de capteur qui remplacera le Sony IMX9.

Comment créer une application de chat en temps réel à l'aide de React et WebSocket Introduction : Avec le développement rapide d'Internet, la communication en temps réel a attiré de plus en plus d'attention. Les applications de chat en direct font désormais partie intégrante de la vie sociale et professionnelle moderne. Cet article expliquera comment créer une application simple de chat en temps réel à l'aide de React et WebSocket, et fournira des exemples de code spécifiques. 1. Préparation technique Avant de commencer à créer une application de chat en temps réel, nous devons préparer les technologies et outils suivants : React : un pour la construction

Guide de séparation front-end et back-end de React : Comment réaliser un découplage front-end et back-end et un déploiement indépendant, des exemples de code spécifiques sont nécessaires Dans l'environnement de développement Web actuel, la séparation front-end et back-end est devenue une tendance. En séparant le code front-end et back-end, le travail de développement peut être rendu plus flexible, plus efficace et faciliter la collaboration en équipe. Cet article expliquera comment utiliser React pour réaliser une séparation front-end et back-end, atteignant ainsi les objectifs de découplage et de déploiement indépendant. Tout d’abord, nous devons comprendre ce qu’est la séparation front-end et back-end. Dans le modèle de développement Web traditionnel, le front-end et le back-end sont couplés

Comment utiliser React et Flask pour créer des applications Web simples et faciles à utiliser Introduction : Avec le développement d'Internet, les besoins des applications Web deviennent de plus en plus diversifiés et complexes. Afin de répondre aux exigences des utilisateurs en matière de facilité d'utilisation et de performances, il devient de plus en plus important d'utiliser des piles technologiques modernes pour créer des applications réseau. React et Flask sont deux frameworks très populaires pour le développement front-end et back-end, et ils fonctionnent bien ensemble pour créer des applications Web simples et faciles à utiliser. Cet article détaillera comment exploiter React et Flask

Guide de conception réactive React : Comment obtenir des effets de mise en page front-end adaptatifs Avec la popularité des appareils mobiles et la demande croissante des utilisateurs pour des expériences multi-écrans, la conception réactive est devenue l'une des considérations importantes dans le développement front-end moderne. React, en tant que l'un des frameworks front-end les plus populaires à l'heure actuelle, fournit une multitude d'outils et de composants pour aider les développeurs à obtenir des effets de mise en page adaptatifs. Cet article partagera quelques directives et conseils sur la mise en œuvre d'une conception réactive à l'aide de React, et fournira des exemples de code spécifiques à titre de référence. Fle en utilisant React

Comment créer une application de messagerie fiable avec React et RabbitMQ Introduction : Les applications modernes doivent prendre en charge une messagerie fiable pour obtenir des fonctionnalités telles que les mises à jour en temps réel et la synchronisation des données. React est une bibliothèque JavaScript populaire pour créer des interfaces utilisateur, tandis que RabbitMQ est un middleware de messagerie fiable. Cet article explique comment combiner React et RabbitMQ pour créer une application de messagerie fiable et fournit des exemples de code spécifiques. Présentation de RabbitMQ :

Guide de débogage du code React : Comment localiser et résoudre rapidement les bogues frontaux Introduction : Lors du développement d'applications React, vous rencontrez souvent une variété de bogues qui peuvent faire planter l'application ou provoquer un comportement incorrect. Par conséquent, maîtriser les compétences de débogage est une capacité essentielle pour tout développeur React. Cet article présentera quelques techniques pratiques pour localiser et résoudre les bogues frontaux, et fournira des exemples de code spécifiques pour aider les lecteurs à localiser et à résoudre rapidement les bogues dans les applications React. 1. Sélection des outils de débogage : In Re

Guide de l'utilisateur de ReactRouter : Comment implémenter le contrôle du routage frontal Avec la popularité des applications monopage, le routage frontal est devenu un élément important qui ne peut être ignoré. En tant que bibliothèque de routage la plus populaire de l'écosystème React, ReactRouter fournit des fonctions riches et des API faciles à utiliser, rendant la mise en œuvre du routage frontal très simple et flexible. Cet article expliquera comment utiliser ReactRouter et fournira quelques exemples de code spécifiques. Pour installer ReactRouter en premier, nous avons besoin
