react 路由

React路由
手寫(xiě)路由
控制地址欄

歌手 根據(jù)改變渲染不同的組件
路由插件 react-router
react-router

下載安裝
npm install react-router-dom

路由的基本使用
HashRouter BrowserRouter 哈希路由 歷史路由 作為組件的父容器
控制地址欄的改變
路由跳轉(zhuǎn)后所有的屬性 都可以在目標(biāo)組件的props里進(jìn)行接受
Link 標(biāo)簽 屬性:to、 exact(精準(zhǔn)匹配,屬性路徑和地址欄路徑完全匹配)
NavLink標(biāo)簽 屬性 to 、exact 、 activeClassName

 <NavLink exact to='/singer' activeClassName='selected' className='nav'> 歌手</NavLink>

Route 控制組件的渲染 path exact component render children
render 、children、component都可以顯示組件,優(yōu)先級(jí)為 render>children>component,(在同一標(biāo)簽內(nèi)只能使用一個(gè))

 <Route exact path='/singer' component={Singer}></Route>

Switch 只返回第一個(gè)匹配到的組件
Redirect 重定向

<HashRouter>
  <Link exact to='/singer'>歌手</Link>
  <NavLink exact to='/recomment' activeClassName='hehe'>推薦</NavLink>
  <Switch>
    <Redirect from='/' to='/singer' exact />
    <Route path='/singer' component={組件}></Route>
    <Route path='/recomment' render={組件}></Route>
    <Route path='/singer' children={組件}></Route>
    <Route component={404}>
  </Switch>
</HashRouter>

編程式導(dǎo)航和聲明式導(dǎo)航(尋找路由對(duì)象)
<Link>或<NavLink>實(shí)現(xiàn)路由的跳轉(zhuǎn) 聲明式導(dǎo)航
通過(guò)js路由對(duì)象的方式叫做編程式導(dǎo)航( push replace go goBack goForwd )
注意 :正常創(chuàng)建的組件是沒(méi)有路由對(duì)象的

通過(guò)Route 處理過(guò)的組件在props里有路由對(duì)象
通過(guò)withRouter 處理過(guò)的組件也有路由對(duì)象
路由傳參
動(dòng)態(tài)導(dǎo)航 /hehe/:id

 this.props.history.push(`/singer/${us}/${ps}`)

在路由對(duì)象的match 里獲取傳遞的參數(shù)
query傳參:/hehe?us=123&ps=123
相當(dāng)于get方法 接受數(shù)據(jù)在路由對(duì)象的 location里 需要自己做字符解析

this.props.history.push('/singer?us=123&ps=456')

state 傳參:
在路由對(duì)象的location里接受

this.props.history.push({pathname:'/recommend',state:{要傳遞的數(shù)據(jù)}})

嵌套路由
在路由里套路由 所有的組價(jià)都可以使用 Link、 Switch …
嵌套路由的上一級(jí),千萬(wàn)不能加精準(zhǔn)匹配

<Route path='/singer' render={()=>{
  <Route></Route>
  <Route></Route>
}}></Route>

高階組件
hoc 本質(zhì)是一個(gè)函數(shù) 接受一個(gè)組件作為參數(shù) 返回一個(gè)新的組件
功能性的封裝 減少重復(fù)代碼
一般被高階組件處理過(guò)的組件獲取數(shù)據(jù) 都從props獲取

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書(shū)系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 路由 正常的組件內(nèi)部是沒(méi)有路由對(duì)象的 被路由處理過(guò)的組件才有路由對(duì)象 BrowserRouter HashRout...
    jie_han閱讀 308評(píng)論 0 0
  • React中JSX原理 在vue中,我們使用render函數(shù)來(lái)構(gòu)建組件的dom結(jié)構(gòu)性能較高,因?yàn)槭∪チ瞬檎液途幾g模...
    learninginto閱讀 2,116評(píng)論 0 5
  • app.js importReactfrom'react'; import{Route,Link}from'rea...
    kino2046閱讀 400評(píng)論 0 0
  • 一個(gè)企業(yè)的措辭,代表的是一個(gè)企業(yè)的價(jià)值觀取向,代表的是一個(gè)企業(yè)的靈魂。企業(yè)的生存就跟做人一樣,一個(gè)格局大的人不管做...
    漁一涵閱讀 358評(píng)論 0 6
  • 2020年的第一篇文章決定獻(xiàn)給合肥的雪夜 19年實(shí)際上已經(jīng)過(guò)去好幾天了,但感覺(jué)自己的意識(shí)還停留在19年的夏季。 1...
    是奇葩不是枇杷閱讀 155評(píng)論 0 1

友情鏈接更多精彩內(nèi)容