React Router

首先要安装 react router dom: npm install react-router-dom
再来要在专案中引入 module:

import {
  BrowserRouter,
  Switch,
  Route,
  Link
} from "react-router-dom";

<BrowserRouter>
包在最外层,被 <BrowserRouter> 包起来的区域都可以使用 react-router-dom 所提供的功能
<HashRouter>
包在最外层做使用,路径会有 #
<Switch>
只有第一个符合 URL 的元件会被 render
<Route>
只要符合目前的 URL 都会 render 指定的 UI
<Link>
在 React 里面的 <Link to=""></Link> 代表 HTML 的 <a href=""></a>
<Redirect>
重新定向


例如:
有个页面的 Navbar 有 Home 和 About,Home 和 Nav 有对应的文字
App.js

// App.js
import Home from "./Home";
import Nav from "./Nav";
import About from "./About";
import { BrowserRouter, Switch, Route } from "react-router-dom";

function App() {
  return (
    <BrowserRouter>
      <Nav />
      <Switch>
        <Route exact path="/">
          <Home />
        </Route>
        <Route path="/about">
          <About />
        </Route>
      </Switch>
    </BrowserRouter>
  );
}

export default App;

p.s 也可写成这样:

<Route path="/" exact component={Home} />
<Route path="/about" component={About} />
  • exact 表示路径完全符合才会 render 该页面

Nav.js

// Nav.js
import React from "react";
import { Link } from "react-router-dom";

const Nav = () => {
  return (
    <nav>
      <ul>
        <Link to="/">
          <li>Home</li>
        </Link>
        <Link to="/about">
          <li>About</li>
        </Link>
      </ul>
    </nav>
  );
};

export default Nav;

此时点击 Home 时,网页上显示 Home,路径为 http://localhost:3000/
https://ithelp.ithome.com.tw/upload/images/20211011/20140282Q8nFW1IIuZ.jpg
点击 About 时,网页上显示 About,路径为 http://localhost:3000/about
https://ithelp.ithome.com.tw/upload/images/20211011/201402824p32XMxjqX.jpg

而如果我们将 App.js 的 BrowserRouter 改成 HashRouter

//App.js
import { HashRouter, Switch, Route } from "react-router-dom";

function App() {
  return (
    <HashRouter>
      <Nav />
      <Switch>
        <Route path="/" exact component={Home} />
        <Route path="/about" component={About} />
      </Switch>
    </HashRouter>
  );
}

export default App;

此时点击 Home,路径会变成 http://localhost:3000/#/
https://ithelp.ithome.com.tw/upload/images/20211011/20140282ZZl2NdPueq.jpg
点击 About 时,路径会变成 http://localhost:3000/#/about
https://ithelp.ithome.com.tw/upload/images/20211011/20140282VPCBn9diuZ.jpg


<<:  [day28] 更新购物车内品项

>>:  Day25 - 针对 Metasploitable 3 进行渗透测试(6) - 使用 Meterpreter

F# 语言和你 SAY HELLO!!

第二十天 各位点进来的朋友,你们好阿 小的不才只能做这个系列的文章,但还是希望分享给点进来的朋友,知...

Day 25 递回神经网路 RNN 、梯度下降与梯度消失

介绍 递回神经网路 RNN (recurrent neural networks)是神经网路的一种,...

C# 入门笔记03(封装)

变数 C# 中提供的基本值型别可以分为: 定义变数 C# 中变数定义的语法是:data_type 因...

Day 30 - 完赛纪念~迎接"数位"与"绿色"双转型时代的来临

图片来源 终於顺利完成第四年iT邦帮忙铁人赛, 今年的参赛过程也确实相当不容易, 过往其实都会试着...

[Day6] 学 Bootstrap 是为了走更长远的路 ~ Grid 篇 (1)

前言 今天终於来到本系列文第一个重头戏, 也是 Bootstrap 非常实用的~~~~~ Grid ...