摘要:用于精準(zhǔn)匹配路徑,不用也會匹配到匹配的路徑的子路徑,這樣兩個(gè)路由組件都會顯示。路徑中傳遞參數(shù)到路由到的組件,就是在路徑前面加上這樣這個(gè)路由地址就會變成一個(gè)參數(shù)被組件接受到。例如可以獲取到當(dāng)前的基礎(chǔ)路徑。
react-router-dom的版本已經(jīng)更新到了4.1.1,那么我們就一起來學(xué)習(xí)學(xué)習(xí)react v4這個(gè)新版路由的基本使用吧!
在學(xué)習(xí)路由之前我們先需要復(fù)習(xí)幾個(gè)基礎(chǔ)知識,關(guān)于react組件的構(gòu)建,和分離組件到另外的文件
生成react組件的方式我們可以采用一個(gè)函數(shù)來快速生成一個(gè) react組件
觀察如下代碼
import React from "react" const Mycomponent=()=>() ReactDOM.render(這是我的第一個(gè)函數(shù)組件
,document.getElementById("example"))
渲染組件到根節(jié)點(diǎn)上,可以看出沒有任何問題。
我們也可以把這個(gè)組件分離到另外一個(gè)文件中,用es6的 語法import default export導(dǎo)入導(dǎo)出,然后在index.jsx中引用它
//Mycomponent.jsx import React from "react" const Mycomponent=()=>() export default Mycomponent //index.jsx import Mycomponent from "./Mycomponent"這是我的第一個(gè)函數(shù)組件
這樣我們就可以做到函數(shù)式構(gòu)建的react組件在react項(xiàng)目中模塊化使用
第二種就是我們常用的class方式聲明組件
import React from "react" export default class Topic extends React.Component{ render(){ return (向構(gòu)造react組件模板的函數(shù)中傳入路由參數(shù)) } }{this.props.match.params.topicId}
如果一個(gè)react組件作為Route的component屬性值,如下
函數(shù)式聲明Home時(shí),它的模板定義函數(shù)就會默認(rèn)接受一個(gè)對象作為參數(shù),里面包含了路由的各種信息
這樣我們就可以利用模板定義函數(shù)參數(shù)中的信息獲取到路由中的參數(shù)。
`
const Topic=({match})=>//es6語法將參數(shù)對象中的match屬性 ( //賦值給參數(shù)match){match.params.topicId}
如果是用類的方式聲明的組件那么獲取路由參數(shù)信息的辦法是在jsx渲染模板中
this.props.match.params
預(yù)備知識完畢,下面我們就看看怎么做一個(gè)react路由
路由基本用法路由要解決的基本需求是從一個(gè)鏈接點(diǎn)擊到另外一個(gè)鏈接,在頁面中無刷新跳轉(zhuǎn)到頁面的另外一部分內(nèi)容。類似于tabs面板。
例如有如下界面
三個(gè)組件如下:
const App=()=>(主頁
) const Hot=()=>() const Content=()=>(熱門
文章
) const Zhuanlan=()=>()專欄
那么在需要使用路由的頁面組件里面,渲染如下模板
import {Link,Route,BrowserRouter as Router} from "react-router-dom" ()
- 主頁
- 熱門
- 專欄
注意使用Router作為最外層標(biāo)簽,里面只能有一個(gè)一級子節(jié)點(diǎn),用Link來導(dǎo)航 ,to指定路徑,Route指定要導(dǎo)航到的組件,這樣一個(gè)路由的基本使用就成型了。exact用于精準(zhǔn)匹配路徑,不用exact也會匹配到匹配的路徑的子路徑,這樣兩個(gè)路由組件都會顯示。我們需要的是每次切換只會顯示一個(gè)Route中指定的組件
路由的嵌套和路徑中參數(shù)傳遞在一個(gè)子組件Hot中,再嵌套一個(gè)子路由我們應(yīng)該怎么做?
很簡單就是把路由Route再寫入Hot的模板中實(shí)現(xiàn)路由嵌套。
路徑中傳遞參數(shù)到路由到的組件,就是在路徑前面加上: ,這樣這個(gè)路由地址就會變成一個(gè)參數(shù)被組件接受到。例如${match.url}/:id
${match.url}可以獲取到當(dāng)前的基礎(chǔ)路徑。然后在路由用到的組件中可以用
match.params(函數(shù)式聲明的組件中,match需要在函數(shù)參數(shù)中引入)或this.props.match.params(React class類render函數(shù)中)
示例如下
///父組件中 const Hot=({match})=>() //子組件中 const Content=({match})=>(熱門
文章 問答 新聞
)熱門子目錄
{match.params.type}
總結(jié)
1.組件生成的方式有兩種,render在類中顯式渲染,函數(shù)生成。
2.路由的基本用法Router>Route path component指定路徑和組件,Link添加導(dǎo)航按鈕鏈接,to指定路徑地址
3.路由的嵌套,直接在子組件模板中添加Route,Link,match.url引入基礎(chǔ)路徑
4.路由路徑參數(shù)傳遞到模板,用baseUrl/:id類似格式,組件中用match.params.id接收。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://systransis.cn/yun/82915.html
摘要:項(xiàng)目問題總結(jié)這個(gè)項(xiàng)目,很簡單,前端使用,后端使用進(jìn)行開發(fā)。方便移動端開發(fā)。當(dāng)動畫結(jié)束后,有一個(gè)鉤子函數(shù)可以使用其他一些功能組件,都是自己嘗試去編寫的,像日歷組件組件組件等。版本的,是沒有任何的鉤子函數(shù),我就感覺懵逼了。。。 todo-list 項(xiàng)目問題總結(jié) 這個(gè) todo-list 項(xiàng)目,很簡單,前端使用 react,后端 nodejs 使用 koa2 進(jìn)行開發(fā)。數(shù)據(jù)庫使用 Mysql...
摘要:解決的痛點(diǎn)首先我們需要明白和理解和的設(shè)計(jì)初衷和理念。所有框架要解決的問題應(yīng)對需求變化,防止大面積重寫。參考文獻(xiàn)漸進(jìn)式框架理解核心功能原理解析百度網(wǎng)盤視頻學(xué)習(xí)以及源碼資源提取密碼 vue解決jquery的痛點(diǎn) 首先我們需要明白和理解jquery和vue的設(shè)計(jì)初衷和理念。 jquery官網(wǎng)給出的開篇介紹是,jquery是一個(gè)快,小,功能豐富的js庫,它讓html文檔遍歷和操作,事件處理...
摘要:可以脫離語言環(huán)境獨(dú)立運(yùn)行就像一本英文書,我找一個(gè)翻譯,給他點(diǎn)時(shí)間,把英文書翻譯成中文的,這就是編譯型語言解釋型語言有良好的平臺兼容性,在任何環(huán)境中都可以運(yùn)行,前提是安裝了解釋器虛擬機(jī)。就像還是一本英文書,我看一句讓他給我解釋一句。 寫在前面 隨著大數(shù)據(jù)、人工智能這類詞匯撲向我們,python這個(gè)早在1989就已經(jīng)出現(xiàn)的語言終于高調(diào)回歸,為了更好的學(xué)習(xí)python 我們先來了解下它的前世...
摘要:在學(xué)習(xí)過程中,神經(jīng)網(wǎng)絡(luò)的突觸權(quán)重會以一種有序的方式進(jìn)行修改,從而實(shí)現(xiàn)所需的目標(biāo)。中間單元的數(shù)量被稱為網(wǎng)絡(luò)所用的片的數(shù)量。 隨著神經(jīng)網(wǎng)絡(luò)的進(jìn)化,許多過去曾被認(rèn)為不可想象的任務(wù)現(xiàn)在也能夠被完成了。圖像識別、語音識別、尋找數(shù)據(jù)集中的深度關(guān)系等任務(wù)現(xiàn)在已經(jīng)變得遠(yuǎn)遠(yuǎn)更加簡單了。在此向這一領(lǐng)域的杰出的研究者致以真誠的謝意,正是他們的發(fā)現(xiàn)和成果幫助我們利用上了神經(jīng)網(wǎng)絡(luò)的真正力量。如果你真正對追求機(jī)器學(xué)習(xí)這...
閱讀 2307·2023-04-25 16:42
閱讀 1207·2021-11-22 14:45
閱讀 2346·2021-10-19 13:10
閱讀 2831·2021-09-29 09:34
閱讀 3415·2021-09-23 11:21
閱讀 2107·2021-08-12 13:25
閱讀 2194·2021-07-30 15:15
閱讀 3499·2019-08-30 15:54