首页 > 其他分享 >react 路由详解

react 路由详解

时间:2023-02-10 00:33:30浏览次数:36  
标签:react 详解 参数 组件 router 路由 页面

简述

  路由的本质就是在一个页面上,通过交互,不刷新页面但能改变页面视图的一种方法。

  react-router就是一个扩展react从而实现路由的第三方库

  router实例在线演示:https://scrimba.com/scrim/cNq8MzCr

单页面应用

  单页面应用是指整个系统的前端只有一个页面,跳转到别的页面是通过切换页面上组件的形式进行跳转,在加载页面时一般会将所有组件的数据进行加载,所以在切换的时候不需要刷新,用户体验也会更好

安装依赖

  通过npm进行依赖安装

npm install react-router-dom

基本使用

  在你的index.js中,引入BrowserRouter, Route, Switch等路由相关资源

import ReactDOM from 'react-dom'
import { BrowserRouter, Route, Switch } from "react-router-dom"

  用BrowserRouter把你的App组件包裹起来

<BrowserRouter>
    <App />
</BrowserRouter>

  在app组件中添加Switch标签,他的作用是让页面每次只渲染一个组件

  然后在Switch标签里即可添加Router标签,一个Router即定义了一个路由关系,path和组件相对应,如果在后面加了exact则表示只有完全匹配才会跳转

  其中没有path的路由是处理错误的路由,用于专门展示错误信息

function App() {
    return (
        <main>
            <Navbar />
            <Switch>
                <Route path="/" component={Home} exact />
                <Route path="/about" component={About} />
                <Route path="/shop" component={Shop} />
                <Route component={Error} />
            </Switch>
        </main>
    )
}

  设置完这一步,我们就可以通过浏览器的URl进行组件的切换

  若想使用按钮、链接等方式进行组件切换的交互,可以使用Link标签把一些触发切换的元素包裹住,这样就能进行路由切换了

在路由中传递参数

  在Route标签中的path属性中,url使用/:参数名的方式进行书写,例如:

<Route path="/about/:name" component={About} />

  在对应组件中,我们就可以通过 props.match.params.参数名 的方式接受到路由传递过来的参数

  也可以使用下面说到的 useParams 进行参数的获取

router hooks

  Router hooks 可以让我们更加容易地访问到 history,location,路由参数 等等

  hooks可以在 https://reactrouter.com/en/main/start/overview 进行查阅,这里列出比较详细的几种

useHistory

  返回windows.history

import { useHistory } from "react-router-dom";

const Contact = () => {
  const history = useHistory();
  return (
    <Fragment>
      <h1>Contact</h1>
      <button onClick={() => history.push("/")}>Go to home</button>
    </Fragment>
  );
};

useParams

  返回上面说的参数,代码和上方类似

useLocation

  返回当前 URL 的 location 对象,代码和上方类似

References

  https://www.freecodecamp.org/chinese/news/react-router-in-5-minutes/

  https://juejin.cn/post/6948226424427773983

 

标签:react,详解,参数,组件,router,路由,页面
From: https://www.cnblogs.com/CNLayton/p/17107572.html

相关文章

  • vue和react的区别
    Vue:Vue是一个用于Web构建的UI的渐进式框架。"渐进式框架"和"自底向上增量开发的设计"是Vue开发的两个概念。特点:易用,使用成本低;灵活,生态系统完善。React:React主张函数......
  • 预处理指令详解(C语言
    一、预处理符号预处理符号是C语言内置的符号,是可以直接使用的。其中,若遵顼ANSIC,则__STDC__为1,否则未定义。二、#define1)定义标识符define可以用来定义标识符,其语法......
  • zookeeper详解
    ————————————————什么时候新建日志文件:1、在进行事务日志写入之前,zookeeper会判断是否正在关联一个可写的事务日志文件,如果有则继续追加,如果没有就新......
  • kafka配置详解
    关闭自动消费Spring-Boot-kafka的配置中有一个参数,提供了自动消费的功能。使用自动消费我们在收到消息的时候会自动向kafka确认消费。但是在一些特殊场景中我们可能需要使......
  • js构造函数详解
    1.构造函数介绍构造函数是专门用来生成对象的函数,它提供模板,描述对象的基本结构。一个构造函数,可以生成多个对象,这些对象都有相同的结构。构造函数的写法就是一个普通的函......
  • LSA 2 详解
    <ar3>displayospflsdbnetworkOSPFProcess1withRouterID3.3.3.3Area:0.0.0.0LinkStateDatabaseType:Network//LSA类型network,也就是LSA-2......
  • React面试题---setState是同步执行还是异步执行?
    1.React中setState是同步执行还是异步执行?什么时候是同步什么时候是异步?1importReact,{Component}from"react";2importReactDOMfrom"react-dom";3//......
  • react 根据json分类显示数据 (react哲学示例部分)
    形如constPRODUCTS=[ {category:'SportingGoods',price:'$49.99',stocked:true,name:'Football'}, {category:'SportingGoods',price:'$9.99',sto......
  • 好客租房5-React脚手架的应用
    3.1react脚手架意义1脚手架是开发现代web应用的必备2充分利用webpackbabeleslint等工具进行使用3零配置4关注业务即可3.2使用react脚手架初始化项目1初始化项目命令:npx......
  • 好客租房2-React概述
    1.1什么是reactReact是一个用于构建用户界面的javascript库用户界面:HTML页面React主要用来HTML或者沟通构建web应用如果从MVC的角度来看react仅仅是从视图层也就是只负......