跳转至

React Router

注意

建议新项目使用 @reach/router,详见 React Router 作者公告

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

function App() {
  return (
      <Router>
        <Link to="/">Home</Link>
        <Link to="/about">About</Link>
        <Link to="/users">Users</Link>

        <Switch>
          <Route path="/about">About</Route>
          <Route path="/users">
            <Users/>
          </Route>
          <Route path="/">Home</Route>
        </Switch>
      </Router>
  );
}

function Users() {
  // Route 匹配信息
  const match = useRouteMatch();
  return (
      <>
        <Link to={`${match.url}/components`}>Components</Link>
        <Link to={`${match.url}/props-v-state`}>Props v. State</Link>

        <Switch>
          <Route path={`${match.path}/:userId`}>
            <User/>
          </Route>
          <Route path={match.path}>All users: ...</Route>
        </Switch>
      </>
  );
}

function User() {
  let {userId} = useParams();
  return <>User ID: {userId}</>;
}

把所有的内容包在 <Router> 里,<Link> 就当 <a> 用。区别在 <Switch>,它会渲染当中第一个符合条件的 <Route>