Premiers pas avec React Router
Hello World avec React et React Router
Une fois que vous avez installé react
et react-router
, il est temps de les utiliser ensemble.
La syntaxe est très simple, vous spécifiez “l’url” et le “composant” que vous voulez rendre lorsque cette URL est ouverte
<Route path="hello" component={ HelloComponent } />
Cela signifie que lorsque le chemin de l’URL est hello
, rendez le composant HelloComponent
FILENAME : app.js
'use strict';
import React from 'react';
import { render } from 'react-dom';
import { Router, browserHistory, Link } from 'react-router';
// These are just demo components which render different text.
let DashboardPage = () => (
<div>
<h1>Welcome User</h1>
<p>This is your dashboard and I am an example of a stateless functional component.</p>
<Link to="/settings">Goto Settings Page</Link>
</div>
)
let SettingsPage = () => (
<div>
<h1>Manage your settings</h1>
<p>display the settings form fields here...or whatever you want</p>
<Link to="/">Back to Dashboard Page</Link>
</div>
)
let AuthLoginPage = () => (
<div>
<h1>Login Now</h1>
<div>
<form action="">
<input type="text" name="email" placeholder="email address" />
<input type="password" name="password" placeholder="password" />
<button type="submit">Login</button>
</form>
</div>
</div>
)
let AuthLogoutPage = () => (
<div>
<h1>You have been successfully logged out.</h1>
<div style={{ marginTop: 30 }}>
<Link to="/auth/login">Back to login page</Link>
</div>
</div>
)
let ArticlePage = ({ params }) => (
<h3>Article {params.id}</h3>
)
let PageNotFound = () => (
<div>
<h1>The page you're looking for doesn't exist.</h1>
</div>
)
// Here we pass Router to the render function.
render( (
<Router history={ browserHistory }>
<Route path="/" component={ DashboardPage } />
<Route path="settings" component={ SettingsPage } />
<Route path="auth">
<IndexRoute component={ AuthLoginPage } />
<Route path="login" component={ AuthLoginPage } />
<Route path="logout" component={ AuthLogoutPage } />
</Route>
<Route path="articles/:id" component={ ArticlePage } />
<Route path="*" component={ PageNotFound } />
</Router>
), document.body );
Paramètres de routage : le chemin du routeur peut être configuré pour prendre des paramètres afin que nous puissions lire la valeur du paramètre au niveau du composant. Le chemin dans <Route path="articles/:id" component={ ArticlePage } />
a un /:id
. Cette variable id
sert de paramètre de chemin et est accessible au niveau du composant ArticlePage
en utilisant {props.params.id}
.
Si nous visitons http://localhost:3000/#/articles/123
alors {props.params.id}
au niveau du composant ArticlePage
sera résolu en 123. Mais en visitant l’url http://localhost:3000 /#/articles
, ne fonctionnera pas car il n’y a pas de paramètre id.
Le paramètre route peut être rendu facultatif en l’écrivant entre une paire de parenthèses :
<Route path="articles(/:id)" component={ ArticlePage } />
Si vous souhaitez utiliser des sous-routes, vous pouvez le faire
<Route path="path" component={ PathComponent }>
<Route path="subpath" component={ SubPathComponent } />
</Route>
- lorsque
/path
est accédé,PathComponent
sera rendu - lorsque
/path/subpath
est accédé,PathComponent
sera rendu etSubPathComponent
lui sera passé en tant queprops.children
Vous pouvez utiliser path="*"
pour intercepter toutes les routes qui n’existent pas et afficher la page 404 page introuvable
.
Commencer
Ce * démarrage * suppose que vous travaillez avec [create-react-app] [1], ou quelque chose d’équivalent en utilisant Babel et tous les goodies là-bas.
Consultez également l’excellente documentation [ici] [2].
Tout d’abord, installez react-router-dom :
npm install react-router-dom
ou yarn add react-router-dom
.
Ensuite, créez un composant qui existe d’une barre de navigation de base avec deux éléments et des pages de base :
import React from 'react'
import { BrowserRouter, Route, Link } from 'react-router-dom'
const Home = () => (
<div>
<p>We are now on the HOME page</p>
</div>
)
const About = () => (
<div>
<p>We are now on the ABOUT page</p>
</div>
)
const App = () => (
<BrowserRouter>
<div>
<ul>
<li><Link to="/">Home</Link></li>
<li><Link to="/about">About</Link></li>
</ul>
<hr/>
<Route path="/" component={Home}/>
<Route path="/about" component={About}/>
</div>
</BrowserRouter>
)
export default App
Passons étape par étape à travers ce code :
import React from 'react'
: assurez-vous d’importerReact
import { BrowserRouter as Router, Route, Link } from 'react-router-dom'
divisé :BrowserRouter
est le routeur lui-même. Assurez-vous d’envelopper votre composant dans le composant “BrowserRouter”.Route
est une route particulière qui peut être naviguée versLink
est un composant qui produit une balise<a href="...">
, que vous pouvez utiliser comme lien hypertexte.
const Home
est une fonction qui renvoie la page d’accueil.const About
est une fonction qui retourne la page About.
-
const App
est le composant principal : -
<BrowserRouter>
est le composant [JSX][3] qui encapsule les composants dans lesquels vous souhaitez utiliser le composant<Route>
. -
‘
est un élément unique pour envelopper tout JSX à l'intérieur du
BrowserRouter`.<ul>
est la barre de navigation. Il contient un lien vers Accueil et un lien vers À propos.<li><Link to="/">Accueil</Link></li>
renvoie à la page d’accueil. Vous pouvez voir que, puisque le lien fait référence à “/”, un chemin relatif vide rend la page d’accueil.<li><Link to="/about">À propos</Link></li>
renvoie à la page À propos.<Route path="/" component={Home}/>
décrit quel composant doit être rendu si le chemin relatif est"/"
.<Route path="/about" component={About}/>
décrit quel composant doit être rendu si le chemin relatif est"/about"
.Beaucoup à apprendre d’ici, mais j’espère que cela explique les principes fondamentaux, afin qu’à partir d’ici vous puissiez continuer vos apprentissages.
[1] : https://www.wikiod.com/fr/reactjs/premiers-pas-avec-react#Créer une application React [2] : https://reacttraining.com/react-router/web/guides/quick-start [3] : https://www.wikiod.com/fr/reactjs/jsx
Installation et configuration
Pour installer React Router, exécutez simplement la commande npm
npm install --save react-router
Et tu as fini. C’est littéralement tout ce que vous avez à faire pour installer le routeur React.
Veuillez noter :
react-router
dépend dereact
, alors assurez-vous d’installer égalementreact
.Installer:
en utilisant un transpileur ES6, comme babel
import { Router, Route, Link } from 'react-router'
n’utilisant pas de transpileur ES6
var Router = require('react-router').Router var Route = require('react-router').Route var Link = require('react-router').Link
Installation à l’aide de la version UMD
Une version est également disponible sur npmcdn. Vous pouvez inclure le script comme ceci :
<script src="https://npmcdn.com/react-router/umd/ReactRouter.min.js"></script>
La bibliothèque sera disponible globalement sur
window.ReactRouter
.