React_router基础用法

本文详细介绍了如何在React项目中使用React Router进行页面路由管理,包括下载安装、基本语法、BrowserRouter与HashRouter的区别、Link组件的使用、Switch组件的功能、404页面设置及参数传递等关键知识点。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

下载安装

npm install --save react-router

引入

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

语法

例如:

<Router>
   <Route path="/Home" component={Home}></Route>
   <Route path="/Mine" component={Mine}></Route>
</Router>

这里的<Route>代表的是路径的跳转

path:指的是网页的路径

component:值的是指向的组件

外层需要使用<Router>包裹

HashRouter与BrowserRouter的区别

BrowserRouter:h5新特性/history.push

注意:如果上线之后,需要后台做一些处理:重定向处理 404bug

http://localhost:3000/Home

HashRouter:锚点链接

http://localhost:3000/#/home

Link语法

例子:

<ul>
   <li>
      <Link to="/Home">Home页面</Link>
   </li>
   <li>
      <Link to="/Mine">Mine页面</Link>
   </li>
</ul>

这里的to代表的是指向的跳转路径

注意:需要嵌套在Router里面使用

link的一些属性

<Link to={{
     pathname:"/Home",//路径
     search:"?name=xixi",//携带的参数属性
     hash:"#the-hash",//参数类型(hash)
     state:{flag:"flsg"}//隐形参数
}}>Home页面</Link>

BrowserRouter语法

例子:

<Route exact path="/Mine" component={Mine}></Route>
<Route path="/Mine/ucenter" component={UCenter}></Route>

如果/Mine/ucenter则会包含mine组件,若要不让mine不显示则在path前面加上exact默认为true

精准匹配

例子:

<Route exact strict path="/Mine" component={Mine}></Route>

如果加上exact的话那么请求路径后面加个斜杆也不起跳转效果

404页面

如果访问的路径不存在的话可显示404页面

语法:

<Route component={NotFound}></Route>

直接加载一个组件页面即可

Switch组件

将所有的Route包裹在Switch内,即可只访问一个页面

<Switch>
	<Route path="/Home" component={Home}></Route>
</Switch>

NavLink高亮

js语法:

<NavLink to="/Home">Home页面</NavLink>

css语法:

.active{
    color: red;
}

要是加activeClassName可改变ClassName

传参

语法:

<Route exact strict path="/Mine/:id?" component={Mine}></Route>

在请求路径后面加上斜杆冒号和属性名[可多传]

注:要是在最后加上一个问号,代表参数可有可无,不会跳转到404页面

Redirect重定向

语法:

{
   islogin ? <div>shop</div> :
   <Redirect to="/"/>
}

如果判断为false的话,将自动跳转到根路径[用于没有登录状态下使用]

push与replace重定向

push:叠加的上一次页面依然存在

props.history.push("/")

replace:是替换,上一次的页面不存在 

props.history.replace("/")

一般定在方法中...

Prompt函数

语法:

<Prompt when={!!this.state.name} message={'确定要离开么?'}>
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值