IT数码 购物 网址 头条 软件 日历 阅读 图书馆
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
图片批量下载器
↓批量下载图片,美女图库↓
图片自动播放器
↓图片自动播放器↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁
 
   -> JavaScript知识库 -> 使用React-Router-Dom v6开发一个React应用程序 -> 正文阅读

[JavaScript知识库]使用React-Router-Dom v6开发一个React应用程序

Header Img

? ? ? ?在这篇文章中,我将给出如何在React Router Dom的帮助下创建一个React App的完整过程。

? ? ? React Router v6? 主要用于开发单页Web应用。

点我查看 React Router 6?article.

在这个例子中,我们将创建一个简单的响应应用程序,它将有多个页面,但仍然是一个单页面应用程序。反应路由器的主要优点是,例如,当单击到另一个页面的链接时,页面不需要刷新。

在本例中,我们将创建一个简单的4页应用程序,其中包含最少的内容,但重点将放在Routing及其重要性上。


一、首先,创建一个新的反应应用程序(不是必需的,但建议遵循)。

npx create-react-app my-app

在创建之后,项目目录应该是这样的:

Directory Example

要运行该应用程序,使用以下命令:

cd my-app
npm start

?确保先cd到app文件夹!

?二、删除src文件夹中的所有文件,除了index .js和App.js(不一定非要这么做,但推荐做么做)

它应该是这样的:

Src folder

?三、编辑

接下来,编辑? App.js? ,让它看起来像这样:

function App() {
  return (
    <div className="App">

    </div>
  );
}

export default App;

然后编辑? index.js? ,让它看起来像这样:

import React from 'react';
import ReactDOM from 'react-dom';
import App from './App';

ReactDOM.render(
  <React.StrictMode>
    <App />
  </React.StrictMode>,
  document.getElementById('root')
);

四、创建Components文件夹和文件

我们现在已经做好了前期准备!

现在,在src中创建一个名为? Components? 的新文件夹。

在这个文件夹中,创建3个文件:

  • page1.js
  • page2.js
  • page3.js

它可能看起来像这样:

Components folder

?五、安装react router v6

npm add react-router-dom@6

然后在? app.js? 中导入? react router dom? 和其他一些组件,这些将在以后使用。

import { BrowserRouter as Router, Route ,Link, Routes} from "react-router-dom";

六、给三个文件添加内容

除了标题外,所有3个都有相同的代码。

page1.js

import React from 'react'

export default function Page1() {
    return (
        <div>
            <h1>Page 1</h1>
        </div>
    )
}

page2.js

import React from 'react'

export default function Page2() {
    return (
        <div>
            <h1>Page 2</h1>
        </div>
    )
}

page3.js

import React from 'react'

export default function Page3() {
    return (
        <div>
            <h1>Page 3</h1>
        </div>
    )
}

现在还没有办法从浏览器打开这些页面。这就是? react-router-dom? 发挥作用的地方。

七、将这3个页面导入到app.js页面中

import Page1 from"./Components/page1" 
import Page2 from"./Components/page2" 
import Page3 from"./Components/page3" 

注意!:组件名称应以大写字母开头

八、在App .js中添加以下代码??

<div className="App"></div>

<Router>
  <Routes>
  </Routes>
</Router>

注意!:? ‘Switch’? 已经被 React Router V6 中的? Routes? 替换

九、在Routes内部添加routers

在Routes内部,我们将添加4个Routes, 3个用于页面,1个用于主页。

每个路由将包含其中一个页面的路径。

<Router>
  <Routes>
    <Route exact path="/" element={<h1>Home Page</h1>} />
    <Route exact path="page1" element={<Page1 />} />
    <Route exact path="page2" element={<Page2 />} />
    <Route exact path="page3" element={<Page3 />} />
  </Routes>
</Router>

十、页面展示测试

现在浏览器上的 App.js页面是空的,但是路由工作正常。在URL输入? localhost:3000/page1? ,它将打开第1页。

Page 1

?现在我们将在? App.js? 页面中添加可点击的链接。

为此,我们将使用前面导入的? Link? 组件。

? </Routes>? 标签之前添加以下代码。(在<Routers></Routers>之间)

<div className="list">
  <ul>
    <li><Link to="/">Home</Link></li>
    <li><Link to="page1">Page 1</Link></li>
    <li><Link to="page2">Page 2</Link></li>
    <li><Link to="page3">Page 3</Link></li>
  </ul>
</div>

完整的 App.js 应该和下面一样

import { BrowserRouter as Router, Route, Link, Routes } from "react-router-dom";

//Import the pages

import Page1 from "./Components/page1"
import Page2 from "./Components/page2"
import Page3 from "./Components/page3"


function App() {
  return (
    <div className="App">
      <Router>
        <Routes>
          <Route exact path="/" element={<h1>Home Page</h1>} />
          <Route exact path="page1" element={<Page1 />} />
          <Route exact path="page2" element={<Page2 />} />
          <Route exact path="page3" element={<Page3 />} />
        </Routes>
        <div className="list">
          <ul>
            <li><Link to="/">Home</Link></li>
            <li><Link to="page1">Page 1</Link></li>
            <li><Link to="page2">Page 2</Link></li>
            <li><Link to="page3">Page 3</Link></li>
          </ul>
        </div>
      </Router>
    </div>
  );
}

export default App;

现在一切都是工作和页面打开时,你点击链接,而不刷新页面,即内容是获取而不重新加载。


CSS - 样式添加

为了让它看起来更好看。

我们在src文件夹中创建一个名为 app.css 的新文件。

添加以下代码。

* {
    padding: 0;
    margin: 0;
}

h1 {
    text-align: center;
    font-size: 45px;
    font-family: Arial, Helvetica, sans-serif;
    color: rgb(6, 0, 32);
    padding: 40px;
}

.list {
    display: flex;
    justify-content: center;
    width: 100%;
}

.list ul li {
    list-style: none;
    margin: 42px;
    text-align: center;
}

a {
    text-decoration: none;
    color: rgb(0, 0, 0);
    font-size: 18px;
    font-family: Arial, Helvetica, sans-serif;
    padding: 14px 25px;
    background-color: transparent;
    border: 2px solid rgb(12, 0, 66);
}

a:hover {
    background-color: rgb(12, 0, 66);
    color: rgb(255, 255, 255);
}

然后把它导入App.js

//import css
import "./app.css"

这时页面将看起来像下面这样:

Result

?

routes相比Switch的优点:

React Router v6 引入了一个??Routes?类似于的组件??Switch?,但功能更强大。?Routes 相比 Switch 主要优点是:

  • a 中的所有<Route>?<Link><Routes>都是相对的。这将导致? <Route path>???<Link to>?更精简和更可预测的代码
  • 根据最佳匹配选择路线,而不是按顺序遍历。这避免了由于不可到达的路由而产生的bug,因为这些路由是?<Switch>后来定义的???????
  • 路由可以嵌套在一起,而不是分散在不同的组件中。在中小型应用程序中,这让您可以轻松地同时查看所有路线。在大型应用程序中,您仍然可以通过??React.lazy?在动态加载的包中嵌套路由

问题:

  • 在v6中Switch不工作。

????????在v6中的 Switch 已被替换为? Routes? 这就是为什么我不在这里使用switch的原因。

  JavaScript知识库 最新文章
ES6的相关知识点
react 函数式组件 & react其他一些总结
Vue基础超详细
前端JS也可以连点成线(Vue中运用 AntVG6)
Vue事件处理的基本使用
Vue后台项目的记录 (一)
前后端分离vue跨域,devServer配置proxy代理
TypeScript
初识vuex
vue项目安装包指令收集
上一篇文章      下一篇文章      查看所有文章
加:2021-12-04 13:21:37  更:2021-12-04 13:23:39 
 
开发: C++知识库 Java知识库 JavaScript Python PHP知识库 人工智能 区块链 大数据 移动开发 嵌入式 开发工具 数据结构与算法 开发测试 游戏开发 网络协议 系统运维
教程: HTML教程 CSS教程 JavaScript教程 Go语言教程 JQuery教程 VUE教程 VUE3教程 Bootstrap教程 SQL数据库教程 C语言教程 C++教程 Java教程 Python教程 Python3教程 C#教程
数码: 电脑 笔记本 显卡 显示器 固态硬盘 硬盘 耳机 手机 iphone vivo oppo 小米 华为 单反 装机 图拉丁

360图书馆 购物 三丰科技 阅读网 日历 万年历 2024年11日历 -2024/11/24 7:15:55-

图片自动播放器
↓图片自动播放器↓
TxT小说阅读器
↓语音阅读,小说下载,古典文学↓
一键清除垃圾
↓轻轻一点,清除系统垃圾↓
图片批量下载器
↓批量下载图片,美女图库↓
  网站联系: qq:121756557 email:121756557@qq.com  IT数码