成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

React Router4.0

kuangcaibao / 1858人閱讀

摘要:的值是一個(gè)函數(shù),這個(gè)函數(shù)返回一個(gè)元素,這個(gè)函數(shù)返回一個(gè)元素。這種方式可以很方便的為待渲染的組件傳遞額外的屬性。與之前兩種方式不同的是,無(wú)論是否匹配成功,返回的組件都將會(huì)被渲染。使用保證只有當(dāng)?shù)臑闀r(shí),第一個(gè)才會(huì)被匹配。

React Router v4是對(duì)React Router的一次徹底重構(gòu),采用動(dòng)態(tài)路由,遵循React中一切皆組件的思想,每一個(gè)Route(路由)都是一個(gè)普通的React組件。

BrowserRouter創(chuàng)建的URL形式如下:
http://react.com/some/path
HashRouter創(chuàng)建的URL形式如下:
http://react.com/#/some/path

使用BrowserRouter時(shí),一般還需要對(duì)服務(wù)器進(jìn)行配置,讓服務(wù)器能正確處理所有可能的URL.例如,當(dāng)瀏覽器發(fā)送 http://react.com/some/path 和 http://react.com/some/path2兩...,服務(wù)器能夠返回正確的HTML頁(yè)面(也就是單頁(yè)面應(yīng)用中唯一的html頁(yè)面).使用HashRouter則不存在這個(gè)問(wèn)題,因?yàn)閔ash部分的內(nèi)容會(huì)被服務(wù)器自動(dòng)忽略,真正有效的是hash前面的部分,而對(duì)于單頁(yè)面應(yīng)用來(lái)說(shuō),這部分內(nèi)容是固定的。

路由的配置

1.path

(1)當(dāng)使用BrowserRouter時(shí),path用來(lái)描述這個(gè)Route匹配的URL的pathname
(2)當(dāng)使用HashRouter時(shí),path用來(lái)描述這個(gè)Route匹配的URL的hash.

2.match

(1)params: Route的path可以包含參數(shù),例如: 包含一個(gè)參數(shù)id。params就是用于從匹配的URL中解析出path中的參數(shù),例如:當(dāng)URL="http://react.com/foo/1時(shí),params={id:1}。
(2)isExact: 是一個(gè)布爾值,當(dāng)URL完全匹配時(shí),值為true;當(dāng)URL部分匹配時(shí),值為false.例如:當(dāng)path="/foo",URL="http://react.com/foo"時(shí),是完全匹配;當(dāng)URL="http://react.com/foo/1時(shí),是部分匹配。
(3)path: Route的path屬性,構(gòu)建嵌套路由時(shí)會(huì)使用到。
(4)url: URL的匹配部分。

3.Route渲染組件的方式

(1)component
component的值是一個(gè)組件,當(dāng)URL和Route匹配時(shí),component屬性定義的組件就會(huì)被渲染。

當(dāng)URL="http://react.com/foo"時(shí),F(xiàn)oo組件會(huì)被渲染。
(2)render
render的值是一個(gè)函數(shù),這個(gè)函數(shù)返回一個(gè)React元素,這個(gè)函數(shù)返回一個(gè)React元素。這種方式可以很方便的為待渲染的組件傳遞額外的屬性。
例如:
(

)}>
Foo組件接收了一個(gè)額外的data屬性。
(3)children children的值也是一個(gè)函數(shù),函數(shù)返回要渲染的React元素。與之前兩種方式不同的是,無(wú)論是否匹配成功,children返回的組件都將會(huì)被渲染。但是當(dāng)匹配不成功時(shí),match屬性為null。例如:
(

)} />
如果Route匹配當(dāng)前URL,待渲染元素的根節(jié)點(diǎn)div的class將被設(shè)置成active。

4.Switch和exact
當(dāng)URL和多個(gè)Route匹配時(shí),這些Route都會(huì)執(zhí)行渲染操作。如果只想讓第一個(gè)匹配的Router渲染,那么可以把這些Route包到一個(gè)Switch組件中。
如果想讓URL和Route完全匹配時(shí),Route才渲染,那么可以使用Route的exact屬性。Switch和exact常常聯(lián)合使用,用于應(yīng)用首頁(yè)的導(dǎo)航。
例如:


 
 
 


如果不使用Switch,當(dāng)URL的pathname為"/posts"時(shí),都會(huì)被匹配。
如果不使用exact,"/" "/posts" "/user1"等幾乎所有URL都會(huì)匹配第一個(gè)Route,又因?yàn)镾witch的存在,后面的兩個(gè)Route永遠(yuǎn)也不會(huì)被匹配。使用exact,保證只有當(dāng)URL的pathname為"/"時(shí),第一個(gè)Route才會(huì)被匹配。

5.嵌套路由

嵌套路由是指在Route渲染的組件內(nèi)部定義新的Route.例如:
const Posts = ({match}) => {

return(
    
{/*這里match.url等于/posts*/}
)

}
當(dāng)URL的pathname為"/posts/react"時(shí),PostDetail組件會(huì)被渲染;當(dāng)URL的pathname為"/posts"時(shí),PostList組件會(huì)被渲染。Route的嵌套使用讓?xiě)?yīng)用可以更加靈活的使用路由。

6.鏈接

Link是React Router提供的鏈接組件,一個(gè)Link組件定義了當(dāng)點(diǎn)擊該Link時(shí),頁(yè)面應(yīng)該如何路由:
例如:
const Navigation = () => (

)
Link使用to屬性聲明要導(dǎo)航到URL地址。to可以是string或object類型,當(dāng)to為object類型時(shí),可以包含pathname、search、hash、state、四個(gè)屬性,例如:

pathname:"/posts",
search:"?sort=name",
hash:"#the-hash",
state:{formHome:true}

}}/>
除了使用Link外,我們還可以使用history對(duì)象手動(dòng)實(shí)現(xiàn)導(dǎo)航,history中最常用的方法是push(path,[state])和replace(path,[state]),push會(huì)向?yàn)g覽器歷史記錄中新增一條記錄,replace會(huì)用新紀(jì)錄替換當(dāng)前紀(jì)錄,例如:

history.push("/posts")
history.replace("/posts")

import React from "react";
import { BrowserRouter as Router, Route, Link } from "react-router-dom";

function BasicExample() {
return (


  
  • Home
  • About
  • Topics

);
}

function Home() {
return (

Home

);
}

function About() {
return (

About

);
}

function Topics({ match }) {
return (

Topics

  • Rendering with React
  • Components
  • Props v. State

Please select a topic.

} />

);
}

function Topic({ match }) {
return (

{match.params.topicId}

);
}

export default BasicExample;

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/108983.html

相關(guān)文章

  • react、react-router、redux 也許是最佳小實(shí)踐1

    摘要:通過(guò)聲明式編程模型定義組件,是最強(qiáng)大的核心功能。無(wú)論是的瀏覽器書(shū)簽,還是的導(dǎo)航功能,只要是可以使用的地方,就可以使用。二級(jí)路由使用渲染組件屬性狀態(tài)請(qǐng)選擇一個(gè)主題。也許是最佳小實(shí)踐地址,覺(jué)得有幫助的話,請(qǐng)點(diǎn)擊一下,嘿嘿 小前言 這是一個(gè)小小的有關(guān)react的小例子,希望通過(guò)一個(gè)小例子,可以讓新手更好的了解到react、react-router4.0、redux的集中使用方法。 這是基...

    Betta 評(píng)論0 收藏0
  • React 328道最全面試題(持續(xù)更新)

    摘要:希望大家在這浮夸的前端圈里,保持冷靜,堅(jiān)持每天花分鐘來(lái)學(xué)習(xí)與思考。 今天的React題沒(méi)有太多的故事…… 半個(gè)月前出了248個(gè)Vue的知識(shí)點(diǎn),受到很多朋友的關(guān)注,都強(qiáng)烈要求再出多些React相前的面試題,受到大家的邀請(qǐng),我又找了20多個(gè)React的使用者,他們給出了328道React的面試題,由我整理好發(fā)給大家,同時(shí)發(fā)布在了前端面試每日3+1的React專題,希望對(duì)大家有所幫助,同時(shí)大...

    kumfo 評(píng)論0 收藏0
  • React 深入系列1:React 中的元素、組件、實(shí)例和節(jié)點(diǎn)

    摘要:中的元素組件實(shí)例和節(jié)點(diǎn),是中關(guān)系密切的個(gè)概念,也是很容易讓初學(xué)者迷惑的個(gè)概念。組件和元素關(guān)系密切,組件最核心的作用是返回元素。只有組件實(shí)例化后,每一個(gè)組件實(shí)例才有了自己的和,才持有對(duì)它的節(jié)點(diǎn)和子組件實(shí)例的引用。 React 深入系列,深入講解了React中的重點(diǎn)概念、特性和模式等,旨在幫助大家加深對(duì)React的理解,以及在項(xiàng)目中更加靈活地使用React。 React 中的元素、組件、實(shí)...

    LeviDing 評(píng)論0 收藏0
  • React 深入系列1:React 中的元素、組件、實(shí)例和節(jié)點(diǎn)

    摘要:中的元素組件實(shí)例和節(jié)點(diǎn),是中關(guān)系密切的個(gè)概念,也是很容易讓初學(xué)者迷惑的個(gè)概念。組件和元素關(guān)系密切,組件最核心的作用是返回元素。只有組件實(shí)例化后,每一個(gè)組件實(shí)例才有了自己的和,才持有對(duì)它的節(jié)點(diǎn)和子組件實(shí)例的引用。 文:徐超,《React進(jìn)階之路》作者授權(quán)發(fā)布,轉(zhuǎn)載請(qǐng)注明作者及出處 React 深入系列,深入講解了React中的重點(diǎn)概念、特性和模式等,旨在幫助大家加深對(duì)React的理解...

    techstay 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

kuangcaibao

|高級(jí)講師

TA的文章

閱讀更多
最新活動(dòng)
閱讀需要支付1元查看
<