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