react-router-dom的常见问题总结

下载react-router-dom
路由:不同的路由

npm i react-router-dom --save
App.js文件中引入路由相关的模块
import React from 'react';
/**HashRouter规定路由的形式:路由是#/的形式
http://localhost:3000/#/main/home**/
import { HashRouter as Router, Link, Route, Redirect,Switch } from 'react-router-dom';
import Home from './Home';
import LifeCircle from './LifeCircle';

function App() {
  return (
    <>
      <Router basename='/main'>
        <Link to={{pathname:'/home',search:"?id=1",hash:'#abc',state:{msg:'123'}}}>首页</Link>
        <Link to='/lifecircle/123'>生命周期</Link>
        <Route path='/home' exact component={Home}></Route>
        <Route path='/lifecircle/:id' exact component={LifeCircle}></Route>
        <Redirect path='/' to='/home'></Redirect>
      </Router>
    </>
  );
}

export default App;

或者

import React from 'react';
/**BrowserRouter规定路由的形式:需后端配合使用
http://localhost:3000/main/home **/
import { BrowserRouter as Router, Link, Route, Redirect,Switch} from 'react-router-dom';
import Home from './Home';
import LifeCircle from './LifeCircle';

function App() {
  return (
    <>
      <Router basename='/main'>
        <Link to={{pathname:'/home',search:"?id=1",hash:'#abc',state:{msg:'123'}}}>首页</Link>
        <Link to='/lifecircle/123'>生命周期</Link>
        <Route path='/home' exact component={Home}></Route>
        //动态路由:id就是动态参数,可以在页面的props.match.params中获取
        <Route path='/lifecircle/:id' exact component={LifeCircle}></Route>
        <Redirect path='/' to='/home'></Redirect>
      </Router>
    </>
  );
}

export default App;
Router相当于一个容器,用来包裹Route,Link,Redirect等路由组件
basename:定义路由的基础路径,当点击’生命周期’进行跳转时路由地址会变为:/main/lifecircle
Link:组件相当于a标签,用于页面跳转
to后面可以是字符串,直接跟跳转的路由地址
to后面也可以是对象
pathname:路由地址
search:在路由地址中添加参数
hash:在路由中拼接hash值
state:传递参数给即将跳转的页面,可以在组件的props.location中获取到
replace:即将跳转的路由地址替换当前路由地址
Route定义不同的路由加载不同的内容
path:定义路由地址
component :定义加载的组件
比如:访问/main时会加载Home组件
exact:精准匹配路由
当我们有路由/和/home时,如果不精准匹配路由时,当访问/home时也会加载/这个路由
Switch只显示匹配到的第一个路由
Switch匹配到第一个路由就不会继续匹配了,
如果不加Route 里不加 exact,那么凡是Link里面 to 的路径包含了/,
那么就会被匹配到,于是Switch就不继续匹配下去

react 404 页面的处理

事件跳转
函数组件和类组件都可以通过props.history对象下提供到的方法进行跳转
props.history.push(‘路径’)
props.history.replace(‘路径’)
props.history.go()
props.history.goBack()
props.history.goForward()
函数组件还可以根据react-router-dom提供的新方法进行跳转
import {useHistory} from ‘react-router-dom’
在函数组件的return前面声明
const router = useHistory()
router对象下的方法同props.history

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

vues

刚好遇见你

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值