溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點(diǎn)擊 登錄注冊 即表示同意《億速云用戶服務(wù)條款》

React Router怎么使用

發(fā)布時(shí)間:2021-12-18 10:10:45 來源:億速云 閱讀:100 作者:iii 欄目:大數(shù)據(jù)

這篇文章主要講解了“React Router怎么使用”,文中的講解內(nèi)容簡單清晰,易于學(xué)習(xí)與理解,下面請大家跟著小編的思路慢慢深入,一起來研究和學(xué)習(xí)“React Router怎么使用”吧!

面試題中的路由部分

路由最初是出現(xiàn)在后端中,后端根據(jù)不同的路由返回不同的頁面,后來隨著單頁面應(yīng)用(SPA)誕生,前端也出現(xiàn)了路由,實(shí)現(xiàn)了不用刷新頁面就可以更新頁面的效果。 

什么是路由

簡單的說,「路由就是URL到函數(shù)的映射」。路由的本質(zhì)是「監(jiān)聽URL的變化,然后匹配路由規(guī)則,顯示相應(yīng)的頁面?!?/strong>

 

Router和Route

在React-Router中,路由使用基本如下所示。

<Router>
  <Route path="/" component={Index} />
  <Route path="/hello" component={Hello}/>
  <Route path="/404" component={Error}/>
  ...
</Router>
 

每一條<Route>就是一條路由,其中包括當(dāng)前路徑和映射的URL。<Router>類似一個(gè)容器,里邊包裹著一條條的路由。

 

服務(wù)端路由

服務(wù)器端會接受到客戶端的http請求,根據(jù)請求中的URL,找到響應(yīng)的映射函數(shù),然后執(zhí)行該函數(shù),向返回的值發(fā)送給客戶端。

在Express中如下:

app.get('/', (req, res) => {
  res.sendFile('index')
})
   

客戶端路由

在客戶端,路由的映射函數(shù)通常是進(jìn)行一些DOM的顯示和隱藏操作。目前前端的實(shí)現(xiàn)方式有兩種,「Hash模式和History模式」

  • Hash模式。在url中的     #及后邊的部分是hash,向服務(wù)端發(fā)送請求的時(shí)候,hash部分不會發(fā)送出去。
  • History模式。主要使用     history.pushState和     history.replaceState改變URL。

兩種方法的比較:

  • Hash模式只更改     #后的內(nèi)容,History可以通過API設(shè)置任意的同源URL;
  • History模式可以通過API添加任意類型的數(shù)據(jù)到歷史記錄中,Hash模式只能更改字符串;
  • Hash兼容性更好,History更加正式;
  • Hash無需后端配置,History需要配置     index.html用于匹配不到資源的時(shí)候(返回index)頁面。
 

動態(tài)路由

上邊所以說的都是靜態(tài)路由,除此之外還有動態(tài)路由。比如,當(dāng)我們登陸github時(shí),url是https://www.github.com/Bzsheng。人家肯定不可能為每個(gè)用戶創(chuàng)建一條路由,這時(shí)候就是創(chuàng)建一條動態(tài)的路由,形如/:id來實(shí)現(xiàn)的,當(dāng)我登陸的時(shí)候,將參數(shù)Bzsheng傳遞過去,從而獲取到頁面。

Express中:

app.get('/user/:id', (req, res) => {
  ...
})
 

Next.js中:

// page/posts/[id].js
export function getStaticPaths { ... }
export function getStaticProps({ params }) { ... }
 

React-Router中:

<Router>
  <Route path="/user/:id" />
</Router>

感謝各位的閱讀,以上就是“React Router怎么使用”的內(nèi)容了,經(jīng)過本文的學(xué)習(xí)后,相信大家對React Router怎么使用這一問題有了更深刻的體會,具體使用情況還需要大家實(shí)踐驗(yàn)證。這里是億速云,小編將為大家推送更多相關(guān)知識點(diǎn)的文章,歡迎關(guān)注!

向AI問一下細(xì)節(jié)

免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。

AI