react 路由Link配置詳解
1、Link的to屬性
(1)放置路由路徑
(2)放置對(duì)象,且為規(guī)定格式
{pathname:"/xx",search:'?鍵值對(duì)',hash:"#xxx",state:{鍵值對(duì)}}
會(huì)自動(dòng)將pathname、search、hash拼接在url路徑上,state為傳入的參數(shù)
可通過(guò)輸出props查看對(duì)象內(nèi)的信息
this.props.location.state.鍵名獲取state內(nèi)的數(shù)據(jù)
2、Link的replace屬性
添加replace將跳轉(zhuǎn)前的上一個(gè)頁(yè)面替換成當(dāng)前頁(yè)面,只將當(dāng)前頁(yè)面入棧
3、Link傳參
在to路徑后添加"/鍵值"
在路由route,path路徑后添加"/:鍵名"
在組件中,函數(shù)式組件:先傳入props形參,然后props.match.params.鍵名
類(lèi)組件:this.props.match.params.鍵名
代碼示例:
import React,{Component} from 'react'
//import {Route,BrowserRouter,Link} from 'react-router-dom'
//將BrowserRouter重命名為Router
import {BrowserRouter as Router,Link,Route} from 'react-router-dom'
import { Button } from 'antd';
import './App.css';
function Home()
{
return(
<div>admin首頁(yè)</div>
)
}
function Me(props)
{
console.log(props)
return(
<div>admin我的</div>
)
}
function Product(props)
{
return(
<div>admin產(chǎn)品頁(yè)面:{props.match.params.id}</div>
)
}
export default class App extends Component{
constructor()
{
super();
}
render()
{
{/*若將路徑寫(xiě)成對(duì)象形式,且和下面相同,會(huì)自動(dòng)將pathname、search、hash自動(dòng)拼接在url路徑上,state為傳入組件的數(shù)據(jù)*/}
let obj={pathname:"/me",search:'?username=admin',hash:"#abc",state:{msg:'hello'}}
return(
<div id='app'>
{/*BrowserRouter可以放多個(gè)*/}
<Router>
{/*因?yàn)榻M件也是返回html內(nèi)容,故可以直接通過(guò)函數(shù)返回html內(nèi)容充當(dāng)組件,但不能直接寫(xiě)html內(nèi)容*/}
<div>
<Route path="/" exact component={()=><div>首頁(yè)</div>}></Route>
<Route path="/product" component={()=><div>product</div>}></Route>
<Route path="/me" component={()=><div>me</div>}></Route>
</div>
{/*<Route path="/" component={function(){return <div>首頁(yè)2</div>}}></Route>*/}
</Router>
{/*BrowserRouter內(nèi)部只能有一個(gè)根容器,包裹其他內(nèi)容*/}
{/*添加basename='/xx'后,點(diǎn)擊Link跳轉(zhuǎn)其他路由時(shí),url會(huì)將/xx添加到路由名前,所以使用路由路徑和加了admin的路由路徑都能匹配該路由*/}
<Router basename='/admin'>
<div>
<div className='nav'>
<Link to='/'>Home</Link>
<Link to='/product/123'>Product</Link>
{/*可在對(duì)應(yīng)的組件中輸出props查看傳入的對(duì)象的信息,添加replace將跳轉(zhuǎn)前的上一個(gè)頁(yè)面替換成當(dāng)前頁(yè)面,只將當(dāng)前頁(yè)面入棧*/}
<Link to={obj} replace>個(gè)人中心</Link>
</div>
<Route path="/" exact component={Home}></Route>
<Route path="/product/:id" component={Product}></Route>
<Route path="/me" exact component={Me}></Route>
</div>
</Router>
</div>
)
}
}
到此這篇關(guān)于react 路由Link配置詳解的文章就介紹到這了,更多相關(guān)react 路由Link內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
react函數(shù)組件類(lèi)組件區(qū)別示例詳解
這篇文章主要為大家介紹了react函數(shù)組件類(lèi)組件區(qū)別示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
useEffect?返回函數(shù)執(zhí)行過(guò)程源碼解析
這篇文章主要為大家介紹了useEffect?返回函數(shù)執(zhí)行過(guò)程源碼解析,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-04-04
Zustand介紹與使用 React狀態(tài)管理工具的解決方案
本文主要介紹了Zustand,一種基于React的狀態(tài)管理庫(kù),Zustand以簡(jiǎn)潔易用、靈活性高及最小化原則等特點(diǎn)脫穎而出,旨在提供簡(jiǎn)單而強(qiáng)大的狀態(tài)管理功能2024-10-10
詳解React如何實(shí)現(xiàn)代碼分割Code Splitting
這篇文章主要為大家介紹了React如何實(shí)現(xiàn)代碼分割Code Splitting示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-08-08
React報(bào)錯(cuò)Function?components?cannot?have?string?refs
這篇文章主要為大家介紹了React報(bào)錯(cuò)Function?components?cannot?have?string?refs解決方案詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2022-12-12
React中useState的使用方法及注意事項(xiàng)
useState通過(guò)在函數(shù)組件里調(diào)用它來(lái)給組件添加一些內(nèi)部state,下面這篇文章主要給大家介紹了關(guān)于React中useState的使用方法及注意事項(xiàng)的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-08-08
詳解React Native網(wǎng)絡(luò)請(qǐng)求fetch簡(jiǎn)單封裝
本篇文章主要介紹了詳解React Native網(wǎng)絡(luò)請(qǐng)求fetch簡(jiǎn)單封裝,小編覺(jué)得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過(guò)來(lái)看看吧2017-08-08

