Skip to content

react-router6

1、安装

bash
npm install react-router-dom@6 -S
yarn add react-router-dom@6

2、使用

js
//index.js
import {BrowserRouter as Router} from "react-router-dom"

root.render(
	<Router>
    	<App/>
    </Router>
)
js
//App.js
//在router6中,移除了router5的component,render,而且children也换了作用
//挂载组件换成了element
import {Routes,Route} from "react-router-dom"
return (
	<Routes>{/*必须写Routes*/}
    	<Route path="/" element={<Home/>}></Route>
        {/*about可以不用写“/”*/}
        <Route path="about" element={<About/>}></Route>
    </Routes>
)


//menu.js
<Link to="/"></Link>
<Link to="/about"></Link>

3、获取参数

js
import {useLocation,useParams,useMatch} from "react-router-dom"

const student=()=>{
    const {id}=useParams()//通过useParams()获取参数
    const location=useLocation()//获取当前的地址信息
    const match=useMatch("/about")//检查当前url是否匹配某个路由,如果路径匹配,返回一个对象,不匹配返回一个null
    const nav=useNavigate();//获取一个用于跳转页面的函数
    
    //比如
    const clickHandler=()=>{
        nav("/home")
        nav("/home",{type:"replace"})
    }
}

4、路由嵌套

1、路由嵌套

js
//App.js
<Routes>
	<Route path="/" element={<Home/>}></Route>
    <Route path="/about" element={<About/>}>
    	<Route path="hello" element={<Hello/>}></Route>
	    <Route path="abc" element={<Abc/>}></Route>
    </Route>
    <Route path="/student:id" element={<Home/>}></Route>
</Routes>

2、出口

js
<Outlet/>

5、Navigate

js
//Navigate组件用来跳转指定的位置,默认使用push跳转
<Navigate to="/student/1" repalce/>//替换页面,不留痕迹
js
<NavLink style={({isActive})=>{
        return isActive?{backgroundColor:"yellow"}:null
    }} to="/student/2">学生</NavLink>