Maison  >  Article  >  interface Web  >  Niveau Architecte : Routage avec React Router

Niveau Architecte : Routage avec React Router

WBOY
WBOYoriginal
2024-07-19 09:51:201114parcourir

Architect level: Routing with React Router

En tant que développeur de niveau architecte, la maîtrise de React Router est essentielle pour concevoir des systèmes de navigation évolutifs, maintenables et efficaces dans les applications React. Ce guide fournit un aperçu approfondi de la configuration de React Router, en utilisant des composants de base tels que Route, Switch, Link et NavLink, et explore les techniques de routage avancées, notamment les routes imbriquées, le routage dynamique, les paramètres de route, les gardes de route et les redirections.

Introduction au routeur React

React Router est une bibliothèque puissante qui facilite la création d'applications monopage (SPA) avec des routes dynamiques et imbriquées, ce qui en fait un outil indispensable pour le développement Web moderne.

Configuration du routeur React

Pour commencer, installez React Router en utilisant npm ou Yarn :

npm install react-router-dom

ou

yarn add react-router-dom

Composants d'itinéraire, de commutateur, de liaison et de NavLink

React Router propose plusieurs composants essentiels pour définir des itinéraires et gérer la navigation.

Composant d'itinéraire

Le composant Route mappe un chemin d'URL vers un composant spécifique. Il permet le rendu conditionnel des composants en fonction de l'URL actuelle.

Exemple :

import React from 'react';
import { BrowserRouter as Router, Route } from 'react-router-dom';
import Home from './Home';
import About from './About';

const App = () => (
  <Router>
    <Route path="/" exact component={Home} />
    <Route path="/about" component={About} />
  </Router>
);

export default App;

Composant de commutation

Le composant Switch garantit que seule la première route correspondante est rendue. Cela empêche le rendu simultané de plusieurs itinéraires.

Exemple :

import React from 'react';
import { BrowserRouter as Router, Route, Switch } from 'react-router-dom';
import Home from './Home';
import About from './About';
import NotFound from './NotFound';

const App = () => (
  <Router>
    <Switch>
      <Route path="/" exact component={Home} />
      <Route path="/about" component={About} />
      <Route component={NotFound} />
    </Switch>
  </Router>
);

export default App;

Composant de lien

Le composant Link permet de créer des liens de navigation dans votre application. Contrairement aux balises d'ancrage traditionnelles, les composants Link ne provoquent pas de rechargement d'une page complète, préservant ainsi l'expérience d'application sur une seule page.

Exemple :

import React from 'react';
import { BrowserRouter as Router, Route, Link } from 'react-router-dom';
import Home from './Home';
import About from './About';

const App = () => (
  <Router>
    <nav>
      <Link to="/">Home</Link>
      <Link to="/about">About</Link>
    </nav>
    <Route path="/" exact component={Home} />
    <Route path="/about" component={About} />
  </Router>
);

export default App;

Composant NavLink

Le composant NavLink étend Link avec des capacités de style supplémentaires basées sur l'itinéraire actif. Il est utile pour créer des menus de navigation avec un style d'état actif.

Exemple :

import React from 'react';
import { BrowserRouter as Router, Route, NavLink } from 'react-router-dom';
import Home from './Home';
import About from './About';

const App = () => (
  <Router>
    <nav>
      <NavLink exact to="/" activeClassName="active">
        Home
      </NavLink>
      <NavLink to="/about" activeClassName="active">
        About
      </NavLink>
    </nav>
    <Route path="/" exact component={Home} />
    <Route path="/about" component={About} />
  </Router>
);

export default App;

Techniques de routage avancées

Itinéraires imbriqués

Les itinéraires imbriqués permettent la création de mises en page complexes avec sous-navigation, ce qui est essentiel pour créer des applications évolutives avec des structures hiérarchiques.

Exemple :

import React from 'react';
import { BrowserRouter as Router, Route, Switch, Link, useRouteMatch } from 'react-router-dom';

const Topic = ({ match }) => <h3>Requested Topic ID: {match.params.topicId}</h3>;

const Topics = () => {
  let { path, url } = useRouteMatch();
  return (
    <div>
      <h2>Topics</h2>
      <ul>
        <li>
          <Link to={`${url}/components`}>Components</Link>
        </li>
        <li>
          <Link to={`${url}/props-v-state`}>Props v. State</Link>
        </li>
      </ul>
      <Switch>
        <Route exact path={path}>
          <h3>Please select a topic.</h3>
        </Route>
        <Route path={`${path}/:topicId`} component={Topic} />
      </Switch>
    </div>
  );
};

const App = () => (
  <Router>
    <div>
      <ul>
        <li>
          <Link to="/">Home</Link>
        </li>
        <li>
          <Link to="/topics">Topics</Link>
        </li>
      </ul>
      <Switch>
        <Route exact path="/">
          <h2>Home</h2>
        </Route>
        <Route path="/topics" component={Topics} />
      </Switch>
    </div>
  </Router>
);

export default App;

Routage dynamique

Le routage dynamique est essentiel pour créer des itinéraires basés sur des paramètres dynamiques, tels que les ID utilisateur ou les ID produit. Il permet des architectures d'applications flexibles et évolutives.

Exemple :

import React from 'react';
import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom';

const User = ({ match }) => <h3>User ID: {match.params.userId}</h3>;

const App = () => (
  <Router>
    <div>
      <ul>
        <li>
          <Link to="/user/1">User 1</Link>
        </li>
        <li>
          <Link to="/user/2">User 2</Link>
        </li>
      </ul>
      <Switch>
        <Route path="/user/:userId" component={User} />
      </Switch>
    </div>
  </Router>
);

export default App;

Paramètres d'itinéraire

Les paramètres de route permettent de capturer les valeurs de l'URL à utiliser dans vos composants. Cette fonctionnalité améliore la nature dynamique de votre application.

Exemple :

import React from 'react';
import { BrowserRouter as Router, Route, Switch, Link } from 'react-router-dom';

const Product = ({ match }) => <h3>Product ID: {match.params.productId}</h3>;

const App = () => (
  <Router>
    <div>
      <ul>
        <li>
          <Link to="/product/101">Product 101</Link>
        </li>
        <li>
          <Link to="/product/202">Product 202</Link>
        </li>
      </ul>
      <Switch>
        <Route path="/product/:productId" component={Product} />
      </Switch>
    </div>
  </Router>
);

export default App;

Gardes de route et redirections

Protéger les routes

Les gardes d'itinéraire restreignent l'accès à certains itinéraires en fonction de conditions, telles que l'authentification des utilisateurs, garantissant ainsi un contrôle d'accès sécurisé au sein de votre application.

Exemple :

import React from 'react';
import { BrowserRouter as Router, Route, Redirect } from 'react-router-dom';

const isAuthenticated = false;

const PrivateRoute = ({ component: Component, ...rest }) => (
  <Route
    {...rest}
    render={(props) =>
      isAuthenticated ? <Component {...props} /> : <Redirect to="/login" />
    }
  />
);

const Dashboard = () => <h3>Dashboard</h3>;
const Login = () => <h3>Login</h3>;

const App = () => (
  <Router>
    <div>
      <PrivateRoute path="/dashboard" component={Dashboard} />
      <Route path="/login" component={Login} />
    </div>
  </Router>
);

export default App;

Implémentation de redirections dans React Router

Les redirections orientent les utilisateurs par programmation vers différents itinéraires, améliorant ainsi l'expérience utilisateur en les dirigeant vers un contenu approprié en fonction du contexte.

Exemple :

import React from 'react';
import { BrowserRouter as Router, Route, Redirect, Switch } from 'react-router-dom';

const OldPage = () => <h3>Old Page (will redirect)</h3>;
const NewPage = () => <h3>New Page</h3>;

const App = () => (
  <Router>
    <Switch>
      <Route path="/old-page">
        <Redirect to="/new-page" />
      </Route>
      <Route path="/new-page" component={NewPage} />
    </Switch>
  </Router>
);

export default App;

Dans cet exemple, visiter /old-page redirige automatiquement l'utilisateur vers /new-page.

Conclusion

La maîtrise de React Router est essentielle pour concevoir des systèmes de navigation robustes et évolutifs dans les applications React. Comprendre comment configurer des itinéraires, utiliser des composants de base tels que Route, Switch, Link et NavLink, et mettre en œuvre des techniques avancées telles que des itinéraires imbriqués, un routage dynamique, des paramètres d'itinéraire et des gardes d'itinéraire vous permettront de créer des applications sophistiquées d'une seule page. En tant que développeur de niveau architecte, votre capacité à concevoir des architectures de routage évolutives améliorera considérablement la maintenabilité et l'efficacité de vos applications, guidant ainsi votre équipe vers des mises en œuvre de projets réussies.

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