Maison interface Web js tutoriel Explication détaillée de la gestion du routage React et de l'utilisation de React Router

Explication détaillée de la gestion du routage React et de l'utilisation de React Router

May 30, 2018 pm 01:55 PM
react router 路由

Cette fois, je vais vous apporter une explication détaillée de la gestion du routage React et de l'utilisation de React Router. Quelles sont les précautions pour la gestion du routage React et l'utilisation de React Router. Ce qui suit est un cas pratique. , jetons un coup d'oeil.

Que fait React Router ? L'introduction officielle est :

Une bibliothèque de routage complète pour React, maintient votre interface utilisateur synchronisée avec l'URL. Elle dispose d'une API simple avec des fonctionnalités puissantes. comme le chargement paresseux de code, la correspondance d'itinéraire dynamique et la gestion des transitions d'emplacement intégrées. Faites de l'URL votre première pensée, pas une réflexion après coup. Synchronisation, fonctionnalités puissantes telles que le chargement paresseux de code, la correspondance d'itinéraire dynamique, le traitement de transition de chemin, etc. peut être réalisé via une simple API.

Voici quelques utilisations de React Router :

Une route de rendu simple

Une chose doit être gardée à l'esprit , Routeur En tant que composant React, il peut être rendu.

HashHistory est utilisé ici - il gère l'historique de routage et la partie de hachage de l'URL.

// ...
import { Router, Route, hashHistory } from 'react-router'
render((
 <Router history={hashHistory}>
  <Route path="/" component={App}/>
 </Router>
), document.getElementById('app'))
Copier après la connexion
Ajoutez plus d'itinéraires et spécifiez leurs composants correspondants

import About from './modules/About'
import Repos from './modules/Repos'
render((
 <Router history={hashHistory}>
  <Route path="/" component={App}/>
  <Route path="/repos" component={Repos}/>
  <Route path="/about" component={About}/>
 </Router>
), document.getElementById('app'))
Copier après la connexion
Deuxième lien

Le composant Lien est utilisé ici, qui peut restituer des liens et utiliser l'attribut to pour pointer vers l'itinéraire correspondant.

// modules/App.js
import React from 'react'
import { Link } from 'react-router'
export default React.createClass({
 render() {
  return (
   <p>
    <h1>React Router Tutorial</h1>
    <ul role="nav">
     <li><Link to="/about">About</Link></li>
     <li><Link to="/repos">Repos</Link></li>
    </ul>
   </p>
  )
 }
})
Copier après la connexion

Trois itinéraires imbriqués

Si nous voulons ajouter une barre de navigation, elle doit exister sur chaque page. S'il n'y a pas de routeur, nous devons encapsuler chaque composant de navigation et référence et le restituer dans chaque composant de page. À mesure que l'application grandit, le code devient redondant. React-router fournit un autre moyen d'imbriquer les composants d'interface utilisateur partagés.

En fait, notre application est une série de boîtes imbriquées, et l'url correspondante peut également illustrer cette relation imbriquée :

On peut donc utiliser le handle

Les composants sont imbriqué
<App>    {/* url /     */}
 <Repos>  {/* url /repos   */}
  <Repo/> {/* url /repos/123 */}
 </Repos>
</App>
Copier après la connexion
dans le composant public App afin que les parties publiques telles que la barre de navigation Nav sur le composant App puissent être partagées :

Ensuite, restituez les enfants dans l'App :

// index.js
// ...
render((
 <Router history={hashHistory}>
  <Route path="/" component={App}>
   {/* 注意这里把两个子组件放在Route里嵌套在了App的Route里/}
   <Route path="/repos" component={Repos}/>
   <Route path="/about" component={About}/>
  </Route>
 </Router>
), document.getElementById('app'))
Copier après la connexion

// modules/App.js
// ...
 render() {
  return (
   <p>
    <h1>React Router Tutorial</h1>
    <ul role="nav">
     <li><Link to="/about">About</Link></li>
     <li><Link to="/repos">Repos</Link></li>
    </ul>
    {/* 注意这里将子组件渲染出来 */}
    {this.props.children}
   </p>
  )
 }
// ...
Copier après la connexion
Quatre liens valides

L'une des différences entre le composant Link et la balise a est que Link peut savoir si le chemin vers lequel il pointe est un un routage valide.

Vous pouvez utiliser activeStyle pour spécifier le style d'un lien efficace, ou vous pouvez utiliser activeClassName pour spécifier la classe de style d'un lien efficace.

<li><Link to="/about" activeStyle={{ color: &#39;red&#39; }}>About</Link></li>
<li><Link to="/repos" activeStyle={{ color: &#39;red&#39; }}>Repos</Link></li>
Copier après la connexion
La plupart du temps, on n'a pas besoin de savoir si le lien est valide, mais cette fonctionnalité est très importante dans la navigation. Par exemple : vous pouvez afficher uniquement les liens de routage légaux dans la barre de navigation.

Vous pouvez spécifier dans NavLink que seuls les liens .actives seront affichés, de sorte que si l'itinéraire n'est pas valide, le lien n'apparaîtra pas dans la barre de navigation.
// modules/NavLink.js
import React from 'react'
import { Link } from 'react-router'
export default React.createClass({
 render() {
  return <Link {...this.props} activeClassName="active"/>
 }
})
Copier après la connexion
// modules/App.js
import NavLink from './NavLink'
// ...
<li><NavLink to="/about">About</NavLink></li>
<li><NavLink to="/repos">Repos</NavLink></li>
Copier après la connexion

Cinq paramètres d'URL

Considérez l'url suivante :

/repos/reactjs/react-router

/ repos/facebook/react

Ils peuvent correspondre à cette forme :

/repos/:userName/:repoName

: suivi de paramètres variables

Le

les paramètres variables

dans l'URL peuvent être obtenus via this.props.params[paramsName] :

Prochaine visite /repos/reactjs/react- router et /repos/ Facebook/React verra un contenu différent.
// modules/Repo.js
import React from 'react'
export default React.createClass({
 render() {
  return (
   <p>
{/* 注意这里通过this.props.params.repoName 获取到url中的repoName参数的值 */}
    <h2>{this.props.params.repoName}</h2>
   </p>
  )
 }
})
Copier après la connexion
// index.js
// ...
// import Repo
import Repo from './modules/Repo'
render((
 <Router history={hashHistory}>
  <Route path="/" component={App}>
   <Route path="/repos" component={Repos}/>
   {/* 注意这里的路径 带了 :参数 */}
   <Route path="/repos/:userName/:repoName" component={Repo}/>
   <Route path="/about" component={About}/>
  </Route>
 </Router>
), document.getElementById('app'))
Copier après la connexion

6 Route par défaut

IndexRoute est ajouté ici pour spécifier le chemin par défaut/composant correspondant. Notez qu'il n'a pas de valeur d'attribut de chemin.

// index.js
import { Router, Route, hashHistory, IndexRoute } from 'react-router'
// and the Home component
import Home from './modules/Home'
// ...
render((
 <Router history={hashHistory}>
  <Route path="/" component={App}>
   {/* 注意这里* /}
   <IndexRoute component={Home}/>
   <Route path="/repos" component={Repos}>
    <Route path="/repos/:userName/:repoName" component={Repo}/>
   </Route>
   <Route path="/about" component={About}/>
  </Route>
 </Router>
), document.getElementById('app'))
Copier après la connexion
De même, il existe également le composant de lien par défaut IndexLink. ,

7 Utilisation de l'historique du navigateur

L'exemple précédent a toujours utilisé hashHistory car il peut toujours s'exécuter, mais une meilleure façon consiste à utiliser l'historique du navigateur , il ne s'appuie pas sur des ports hachés (#).

Vous devez d'abord modifier index.js :

Deuxièmement, vous devez modifier la configuration du service local de webpack, ouvrir package.json et ajouter –history-api-fallback :

复制代码 代码如下:

"start": "webpack-dev-server --inline --content-base . --history-api-fallback"

最后需要在 index.html中 将文件的路径改为相对路径:

<!-- index.html -->
<!-- index.css 改为 /index.css -->
<link rel="stylesheet" href="/index.css" rel="external nofollow" >
<!-- bundle.js 改为 /bundle.js -->
<script src="/bundle.js"></script>
Copier après la connexion

相信看了本文案例你已经掌握了方法,更多精彩请关注php中文网其它相关文章!

推荐阅读:

如何使用AngularJS模态框模板ngDialog

使用Vue.js下载方式案例详解

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 de ce site Web
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

Outils d'IA chauds

Undresser.AI Undress

Undresser.AI Undress

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

AI Clothes Remover

AI Clothes Remover

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

Undress AI Tool

Undress AI Tool

Images de déshabillage gratuites

Clothoff.io

Clothoff.io

Dissolvant de vêtements AI

AI Hentai Generator

AI Hentai Generator

Générez AI Hentai gratuitement.

Outils chauds

Bloc-notes++7.3.1

Bloc-notes++7.3.1

Éditeur de code facile à utiliser et gratuit

SublimeText3 version chinoise

SublimeText3 version chinoise

Version chinoise, très simple à utiliser

Envoyer Studio 13.0.1

Envoyer Studio 13.0.1

Puissant environnement de développement intégré PHP

Dreamweaver CS6

Dreamweaver CS6

Outils de développement Web visuel

SublimeText3 version Mac

SublimeText3 version Mac

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

Comment créer une application de messagerie fiable avec React et RabbitMQ Comment créer une application de messagerie fiable avec React et RabbitMQ Sep 28, 2023 pm 08:24 PM

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 l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Guide de l'utilisateur de React Router : Comment implémenter le contrôle de routage frontal Sep 29, 2023 pm 05:45 PM

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

Java Apache Camel : Construire une architecture orientée services flexible et efficace Java Apache Camel : Construire une architecture orientée services flexible et efficace Feb 19, 2024 pm 04:12 PM

Apache Camel est un framework d'intégration basé sur Enterprise Service Bus (ESB) qui peut facilement intégrer des applications, des services et des sources de données disparates pour automatiser des processus métier complexes. ApacheCamel utilise une configuration basée sur les routes pour définir et gérer facilement les processus d'intégration. Les principales fonctionnalités d'ApacheCamel incluent : Flexibilité : ApacheCamel peut être facilement intégré à une variété d'applications, de services et de sources de données. Il prend en charge plusieurs protocoles, notamment HTTP, JMS, SOAP, FTP, etc. Efficacité : ApacheCamel est très efficace, il peut gérer un grand nombre de messages. Il utilise un mécanisme de messagerie asynchrone, qui améliore les performances. Extensible

PHP, Vue et React : Comment choisir le framework front-end le plus adapté ? PHP, Vue et React : Comment choisir le framework front-end le plus adapté ? Mar 15, 2024 pm 05:48 PM

PHP, Vue et React : Comment choisir le framework front-end le plus adapté ? Avec le développement continu de la technologie Internet, les frameworks front-end jouent un rôle essentiel dans le développement Web. PHP, Vue et React sont trois frameworks front-end représentatifs, chacun avec ses propres caractéristiques et avantages. Lorsqu'ils choisissent le framework front-end à utiliser, les développeurs doivent prendre une décision éclairée en fonction des besoins du projet, des compétences de l'équipe et des préférences personnelles. Cet article comparera les caractéristiques et les usages des trois frameworks front-end PHP, Vue et React.

Intégration du framework Java et du framework front-end React Intégration du framework Java et du framework front-end React Jun 01, 2024 pm 03:16 PM

Intégration du framework Java et du framework React : Étapes : Configurer le framework Java back-end. Créer une structure de projet. Configurez les outils de construction. Créez des applications React. Écrivez les points de terminaison de l'API REST. Configurez le mécanisme de communication. Cas pratique (SpringBoot+React) : Code Java : Définir le contrôleur RESTfulAPI. Code React : obtenez et affichez les données renvoyées par l'API.

Méthode de mise en œuvre et résumé de l'expérience de configuration flexible des règles de routage en PHP Méthode de mise en œuvre et résumé de l'expérience de configuration flexible des règles de routage en PHP Oct 15, 2023 pm 03:43 PM

Méthode de mise en œuvre et résumé de l'expérience de la configuration flexible des règles de routage en PHP Introduction : Dans le développement Web, les règles de routage sont une partie très importante, qui détermine la relation correspondante entre l'URL et les scripts PHP spécifiques. Dans la méthode de développement traditionnelle, nous configurons généralement diverses règles d'URL dans le fichier de routage, puis mappons l'URL sur le chemin de script correspondant. Cependant, à mesure que la complexité du projet augmente et que les exigences commerciales changent, il deviendra très lourd et peu flexible si chaque URL doit être configurée manuellement. Alors, comment implémenter en PHP

Utiliser les fonctions JavaScript pour implémenter la navigation et le routage des pages Web Utiliser les fonctions JavaScript pour implémenter la navigation et le routage des pages Web Nov 04, 2023 am 09:46 AM

Dans les applications Web modernes, la mise en œuvre de la navigation et du routage des pages Web est un élément très important. L'utilisation de fonctions JavaScript pour implémenter cette fonction peut rendre nos applications Web plus flexibles, évolutives et conviviales. Cet article explique comment utiliser les fonctions JavaScript pour implémenter la navigation et le routage des pages Web, et fournit des exemples de code spécifiques. Implémentation de la navigation Web Pour une application Web, la navigation Web est la partie la plus fréquemment utilisée par les utilisateurs. Lorsqu'un utilisateur clique sur la page

Méthodes dynamiques d'ajout et de suppression d'itinéraires dans uniapp Méthodes dynamiques d'ajout et de suppression d'itinéraires dans uniapp Dec 17, 2023 pm 02:55 PM

Uniapp est un framework cross-end basé sur Vue.js. Il prend en charge l'écriture unique et génère en même temps des applications multi-end telles que H5, des mini-programmes et des applications. Il accorde une grande attention aux performances et à l'efficacité du développement pendant le développement. processus de développement. Dans Uniapp, l'ajout et la suppression dynamiques de routes est un problème souvent rencontré lors du processus de développement. Par conséquent, cet article présentera l'ajout et la suppression dynamiques de routes dans Uniapp et fournira des exemples de code spécifiques. 1. Ajoutez dynamiquement des itinéraires Ajoutez dynamiquement des itinéraires en fonction des besoins réels, lorsque la page est chargée ou après une opération de l'utilisateur.

See all articles