返回顶部
首页 > 资讯 > 前端开发 > JavaScript >reactrouter零基础使用教程
  • 774
分享到

reactrouter零基础使用教程

2024-04-02 19:04:59 774人浏览 泡泡鱼
摘要

目录安装配置路由添加一个新页面测试路由配置未找到的路由跳转页面通过 js通过 dom嵌套页面安装 既然学习 React router 就免不了运行 react 安装 react np

安装

既然学习 React router 就免不了运行 react

安装 react

npx create-react-app my-app
cd my-app
npm start

安装 react router

npm install react-router-dom

如果一切正常,就让我们打开 index.js 文件。

配置路由

引入 react-router-dom 的 RouterProvider

import {RouterProvider} from 'react-router-dom'

设置

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <React.StrictMode>
    <RouterProvider router={routers}></RouterProvider>
  </React.StrictMode>
);

这里的 React.StrictMode 代表以严格模式执行其包含的内容。

为了管理路由,让我们再创建一个 root.js 文件

内容如下:

文件:router.js

import {createBrowserRouter} from 'react-router-dom'
import App from '../App.js'
const router =  createBrowserRouter ([
    {
        path:'/',
        element:<App />,
    }
])
export default router;

添加一个新页面测试路由

新建文件:

test.js

export default function Test(){
    return(
        <div>测试页面</div>
    )
}

在 router.js 引入

import {createBrowserRouter} from 'react-router-dom'
import App from '../App.js'
import Test from '../test.js'
const router =  createBrowserRouter ([
    {
        path:'/',
        element:<App />,
    },
    {
        path:'/test',
        element:<Test />
    }
])
export default router;

保存

在浏览器访问 Http://localhost:3000/test

你应该可以看到:

配置未找到的路由

现在我们有 App.js 和 test.js 两个页面,如果访问 http://localhost:3000/hello 会出现什么呢?

这是内置的页面,提醒用户没有找到页面。

接下来使用美化或者自定义的页面:

创建文件:

error.js

export default function Error(){
    return (
        <h1>Page not found</h1>
    )
}

使用 errorElement属性 对应这个页面:

import {createBrowserRouter} from 'react-router-dom'
import App from '../App.js'
import Test from '../test.js'
import Error from '../error.js'
const router =  createBrowserRouter ([
    {
        path:'/',
        element:<App />,
        errorElement:<Error />
    },
    {
        path:'/test',
        element:<Test />
    }
])
export default router;

继续请求 http://localhost:3000/hello

我们刚才自定义的页面成功展示出来了。

跳转页面

跳转页面有很多,这里取两种方式,一是通过 dom 标签,二是通过js

通过 js

使用 useNavigate 跳转页面:

看起来就像这样:

test.js

import { useNavigate } from "react-router-dom";
function Test () {
    const navigate = useNavigate();
    function toTest2(){
        navigate("/test2",{
            state:'anny'
        });
    }
    return(
        <div onClick={toTest2}>跳转页面</div>
    )
}
export default Test

使用 useLocation 接收值:

import {useLocation} from 'react-router-dom'
export default function Test2(){
    let location = useLocation();
    return (
        <div>页面Test2 接收到的值为 {location.state}</div>
    )
}

通过 dom

通过 Link 传值跳转:

import {Link } from "react-router-dom";
function Test () {
    return(
        <div>
            <Link to="/test2" state={'anny'} >跳转页面</Link>
        </div>
    )
}
export default Test

使用 useLocation 接收值:

import {useLocation} from 'react-router-dom'
export default function Test2(){
    let location = useLocation();
    return (
        <div>页面Test2 接收到的值为 {location.state}</div>
    )
}

嵌套页面

平时写管理后台,经常会看到左右分布的布局,如果仅仅依靠 1-5 节的内容肯定很难实现,接下来看一下 根布局。

根布局使用 :

创建一个 父页面,父页面放置两个 链接:

parent.js

import { Link, Outlet } from "react-router-dom";
function Parent(){
    return(
       <div>
        <Link to={'/parent/page1'}>show page1</Link>
        <Link to={'/parent/page2'}>show page2</Link>
        <Outlet></Outlet>
       </div>
    )
}
export default Parent;

继续创建 两个页面 page1.js page2.js

page1.js

function Page1(){
    return(
        <div>i am page1</div>
    )
}
export default Page1;

page2.js

function Page2(){
    return(
        <div>i am page2</div>
    )
}
export default Page2;

修改我们的 router.js 文件:

import {createBrowserRouter} from 'react-router-dom'
import App from '../App.js'
import Test from '../test.js'
import Error from '../error.js'
import Parent from '../parent.js'
import Page1 from '../page1.js'
import Page2 from '../page2.js'
const router =  createBrowserRouter ([
    {
        path:'/',
        element:<App />,
        errorElement:<Error />,
    },
    {
        path:'/test',
        element:<Test />
    },
    {
        path:'/parent',
        element:<Parent />,
        children:[
            {
                path:'/parent/page1',
                element:<Page1 />
            },
            {
                path:'/parent/page2',
                element:<Page2 />
            }
        ]
    }
])
export default router;

到这里还差一步,就是使用重要的标签 <Outlet>

修改我们的父页面

parent.js

import { Link, Outlet } from "react-router-dom";
function Parent(){
    return(
       <div>
        <Link to={'/parent/page1'}>show page1</Link>
        <Link to={'/parent/page2'}>show page2</Link>
        <Outlet></Outlet>
       </div>
    )
}
export default Parent;

保存:

接下来访问 http://localhost:3000/parent 你将看到:

分别点击 show page1show page2 你将看到不同的效果。

如果你想将第一个子组件默认展示出来,你可以将 router.js 改成如下:

    {
        path:'/parent',
        element:<Parent />,
        children:[
            {
                path:'/parent',
                element:<Page1 />
            },
            {
                path:'/parent/page2',
                element:<Page2 />
            }
        ]
    }

再看一下效果:

到此这篇关于react router零基础使用教程的文章就介绍到这了,更多相关react router内容请搜索编程网以前的文章或继续浏览下面的相关文章希望大家以后多多支持编程网!

--结束END--

本文标题: reactrouter零基础使用教程

本文链接: https://lsjlt.com/news/168465.html(转载时请注明来源链接)

有问题或投稿请发送至: 邮箱/279061341@qq.com    QQ/279061341

猜你喜欢
  • reactrouter零基础使用教程
    目录安装配置路由添加一个新页面测试路由配置未找到的路由跳转页面通过 js通过 dom嵌套页面安装 既然学习 react router 就免不了运行 react 安装 react np...
    99+
    2024-04-02
  • Vue electron零基础使用教程
    需求:给vue项目加一个外壳(electron),顾名思义也就是使用electron应用程序运行vue项目,直接将写好上线的vue项目在线地址放入electron程序中即可 操作步骤...
    99+
    2022-11-13
    Vue electron Vue electron
  • Reactrouter基础使用方法详解
    目录react-routerbrowserHistoryReachRouterreact-router 1、使用方法 <Router history={hashHistory}...
    99+
    2023-05-17
    React router React router使用方法
  • OpenMV零基础教程
    一、资料导航         “工欲善其事,必先利其器”。在正式学习OpenMV之前,你必须知道一条或几条OpenMV的学习途径。这里推荐星瞳科技的中文官网教程,这个教程里面包括了OpenMV IDE的下载和安装、OpenMV上手教程、Op...
    99+
    2023-08-31
    python stm32
  • Wireshark零基础使用教程(超详细)
    Wireshark 是一款开源的网络抓包工具,用于分析网络中的数据包。它可以帮助你深入了解网络通信过程,发现问题和解决网络故障。本教...
    99+
    2023-09-23
    Wireshark
  • JavaStream流零基础教程
    目录一、Stream流介绍二、Stream流实现与传统方式实现对比2.1、传统方式实现2.2、Stream流方式实现三、Stream流的常用API3.1、stream流的获取3.2、...
    99+
    2022-11-13
    Java Stream流 Java Stream
  • SQL 零基础入门教程
    目录一、了解 SQL二、检索数据三、排序检索数据四、过滤数据五、高级数据过滤六、用通配符进行过滤七、创建计算字段八、使用函数处理数据九、汇总数据十、分组数据十一、使用子查询十二、联结表十三、创建高级联结十四、组合查询十五、插入数据十六、更...
    99+
    2014-09-15
    SQL 零基础入门教程
  • Swaggo零基础入门教程
    目录配置流程注意区分下载swaggo初始化快速上手gin-swagger简单测试详细配置配置流程 注意区分 go-swagger != swaggo 二者功能差不多,都是生成接口文档...
    99+
    2023-01-28
    Swaggo入门 Golang Swaggo入门
  • Android使用JetpackCompose开发零基础起步教程
    目录永远的Hello World分解的HelloWorld代码预览函数先搭建好之后呢,我们就来做第1个例子。 永远的Hello World 先搭建好之后呢,我们就来做第1个例子,编程...
    99+
    2023-05-15
    Android Jetpack Compose Jetpack Compose入门
  • Windows10安装MySQL教程(零基础)
    1、下载MySQL 官网:https://www.mysql.com/cn/ 点击下载 选择社区版 ...
    99+
    2023-09-07
    mysql 数据库 Powered by 金山文档
  • HTML入门零基础教程(四)
    嗨,大家好,我是异星球的小怪同志 一个想法有点乱七八糟的小怪 如果觉得对你有帮助,请支持一波。 希望未来可以一起学习交流。 通过前三篇的学习,相信你们对HTML有了一些基础的了解,那么我们就来先做一个小练习,巩固一下之前所学习的知识。 目...
    99+
    2023-08-31
    html 前端 css javascript vscode
  • Python零基础教程系列:“Hello World!”
    做了这么多准备,环境也搭建好了,辅助知识也掌握了,是到了编写我们第一个Python程序的时候了。在IDLE里或Pycharm里输入:print("Hello World!")...
    99+
    2023-06-01
  • JavaScriptTypescript基础使用教程
    目录简介安装安装命令使用原因TypeScript类型概述JS原有的类型TS新增的类型类型别名泛型简介 typescript是微软公司开发的开源编程语言,Type+Javascript...
    99+
    2022-12-08
    JavaScript Typescript JS Typescript基本使用
  • Java Swing基础使用教程
    Java Swing是Java语言中的一个GUI工具包,它提供了一系列的组件和容器,可以用于创建各种桌面应用程序。本教程将介绍Java Swing的基本概念、组件和容器,以及如何使用它们来创建一个简单...
    99+
    2023-09-02
    java
  • 零基础搭建boot+MybatisPlus的详细教程
    目录1.准备工作1.1 创建数据库表1.2 创建boot项目1.3 创建实体类(映射数据库表)2.使用mybatisPlus(操作数据库)2.1 添加mybatisPlus依赖2.2...
    99+
    2024-04-02
  • Python零基础教程系列:代码编辑器
    Python解释器、pip工具箱和virtuanlenv虚拟环境都安装好了后,基本的Python环境就搭建好了,可以开始我们的“搬砖”之旅了。但是,等等,“工欲善其事,必先利其器”,我们还差一个很多小伙伴都非常喜欢的环节,那就是代码编辑器的...
    99+
    2023-06-01
  • CobaltStrike使用教程详解(基础)
    声明:本文仅限学习研究讨论,切忌做非法乱纪之事! 大家好,今天简单来聊聊CobaltStrike,这是我们后渗透阶段必不可少的神器。 Cobalt Strike 是一款流行的渗透测试工具,广泛用于红队操作和渗透测试。它由Raphael Mu...
    99+
    2023-09-13
    php 开发语言
  • VUE零基础入门axios的使用
    目录一.axios是什么二.axios的特点三.axios怎么安装四.在VUE全局挂载导入挂载使用五.axios便捷方法六.axios基础方法七.axios执行结果八.config ...
    99+
    2024-04-02
  • 知名技术作家分享Python零基础教程!
    最近这段时间,身边常常有人问:该不该学Python?如何学Python? Python包含的内容很多,加上各种标准库、拓展库,乱花渐欲迷人眼。 很多初学者都迫切希望能出现一个容易上手、言语简洁的Python教程,最好是能循序渐进,...
    99+
    2023-01-31
    基础教程 知名 作家
  • Android Studio使用教程(四):Gradle基础
    其实很早之前也写了一篇Gradle的基础博客,但是时间很久了,现在Gradle已经更新了很多,所以暂且结合Stduio 1.0正式版与最新的Gradle语法来详细讲解下,小伙伴...
    99+
    2022-06-06
    Android Studio studio gradle 教程 Android
软考高级职称资格查询
编程网,编程工程师的家园,是目前国内优秀的开源技术社区之一,形成了由开源软件库、代码分享、资讯、协作翻译、讨论区和博客等几大频道内容,为IT开发者提供了一个发现、使用、并交流开源技术的平台。
  • 官方手机版

  • 微信公众号

  • 商务合作