📜  反应路由器 v6 - Javascript (1)

📅  最后修改于: 2023-12-03 15:07:24.885000             🧑  作者: Mango

反应路由器 v6 - Javascript

反应路由器 v6 是一款基于 React 框架的轻量级路由器,其主要特点是通过组件的方式实现页面的路由控制。它提供了方便易用的 API,使得开发人员可以快速构建复杂的单页面应用程序。

安装

你可以通过 npm 来安装反应路由器:

npm install react-router-dom
基本用法

首先,你需要在你的应用程序中导入必要的组件:

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

然后,在应用程序的 render 函数中,你需要将 Router 组件作为根元素进行渲染,并将 Route 和 Switch 组件添加到其中以定义路由:

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

function App() {
  return (
    <Router>
      <div>
        <Switch>
          <Route exact path="/" component={Home} />
          <Route path="/about" component={About} />
          <Route path="/contact" component={Contact} />
          <Route component={NotFound} />
        </Switch>
      </div>
    </Router>
  );
}

function Home() {
  return <h1>Home</h1>;
}

function About() {
  return <h1>About</h1>;
}

function Contact() {
  return <h1>Contact</h1>;
}

function NotFound() {
  return <h1>404 Not Found</h1>;
}

在上面的代码中,我们通过 Route 组件来定义路径和相应的组件,Switch 组件则是用来确保只有一个路由匹配成功。最后,如果没有匹配成功的路由,我们定义了一个 NotFound 组件用于展示 404 页面。

高级用法

反应路由器 v6 提供了许多高级用法,例如嵌套路由、重定向、查询参数等等。下面是一些例子:

嵌套路由

你可以通过在 Route 组件中定义子组件来实现嵌套路由:

function App() {
  return (
    <Router>
      <div>
        <Switch>
          <Route exact path="/" component={Home} />
          <Route path="/about" component={About} />
          <Route path="/users" component={Users} />
          <Route component={NotFound} />
        </Switch>
      </div>
    </Router>
  );
}

function Users() {
  return (
    <div>
      <h1>Users</h1>
      <Switch>
        <Route exact path="/users" component={UserList} />
        <Route path="/users/:id" component={UserProfile} />
        <Route component={NotFound} />
      </Switch>
    </div>
  );
}

function UserList() {
  return <h2>UserList</h2>;
}

function UserProfile({ match }) {
  return <h2>UserProfile: {match.params.id}</h2>;
}

上面的代码中,我们通过在 Users 组件中定义 Switch 和 Route 组件来实现嵌套路由。用户列表组件 (UserList) 展示所有用户,用户资料组件 (UserProfile) 展示指定用户的详情。

重定向

你可以使用 Redirect 组件来实现路由的重定向:

import { Redirect } from 'react-router-dom';

function App() {
  return (
    <Router>
      <div>
        <Switch>
          <Route exact path="/" component={Home} />
          <Route path="/about" component={About} />
          <Route path="/old-contact" render={() => <Redirect to="/contact" />} />
          <Route component={NotFound} />
        </Switch>
      </div>
    </Router>
  );
}

在上面的代码中,我们使用 Redirect 组件将路由从 /old-contact 重定向到 /contact。

查询参数

你可以通过在 URL 中添加查询参数来实现更加复杂的路由:

function App() {
  return (
    <Router>
      <div>
        <input type="text" onChange={handleInputChange} />
        <Switch>
          <Route exact path="/" component={Home} />
          <Route path="/search" component={SearchResult} />
          <Route component={NotFound} />
        </Switch>
      </div>
    </Router>
  );
}

function handleInputChange(event) {
  history.push(`/search?q=${event.target.value}`);
}

function SearchResult({ location }) {
  const searchParams = new URLSearchParams(location.search);
  const query = searchParams.get('q');

  return <h2>Search Result for "{query}"</h2>;
}

在上面的代码中,我们通过在 URL 中添加查询参数 q 来搜索结果。handleInputChange 函数负责在输入框中输入搜索词时更新 URL,SearchResult 组件根据查询参数来显示搜索结果。

总结

反应路由器 v6 是一个强大而易用的路由器,它可以帮助开发人员快速构建单页面应用程序。上面的例子只是反应路由器 v6 能够实现的一小部分,如果你想了解更多,请阅读反应路由器 v6 的官方文档。