摘要:但是使用標(biāo)記將告訴瀏覽器處理路由就像服務(wù)器端路由一樣。組件需要一個稱為的屬性指向要渲染的客戶端路由。發(fā)生這種情況的原因是響應(yīng)路由器將渲染與路徑匹配的所有內(nèi)容除非另有指定。屬性預(yù)計將是一個函數(shù)將在對象連同和路由配置時調(diào)用。
本文轉(zhuǎn)載自:眾成翻譯
譯者:iOSDevLog
鏈接:http://www.zcfy.cc/article/3815
原文:https://www.fullstackreact.com/30-days-of-react/day-17/
大多數(shù)(如果不是全部)我們的應(yīng)用將在我們的單頁應(yīng)用中有多個視圖。讓我們直接使用React Router為我們的應(yīng)用創(chuàng)建多個視圖。
我們已經(jīng)做了16天了!輕拍你的后背.....。但不是太久, 還有很多。
現(xiàn)在, 我們的應(yīng)用被限制在一個單一的頁面。發(fā)現(xiàn)任何顯示單個視圖的復(fù)雜應(yīng)用都非常少見。例如, 應(yīng)用可能有一個登錄視圖, 用戶可以在其中登錄, 或者搜索結(jié)果頁顯示用戶的搜索結(jié)果列表。這兩種不同的視圖具有兩種不同的頁面結(jié)構(gòu)。
讓我們看看我們?nèi)绾慰梢愿淖兣c我們的應(yīng)用今天。
我們將使用非常流行的 react-router 庫來處理不同的鏈接。為了使用react-router 庫, 我們需要使用 npm 包管理器來安裝它:
npm install --save react-router-dom
安裝了react-router , 我們將從庫中導(dǎo)入一些軟件包, 并更新我們的應(yīng)用體系結(jié)構(gòu)。在我們做這些更新之前, 讓我們退后一步, 從高層看 how 和 why 我們以這種方式構(gòu)建我們的應(yīng)用。
從概念上講, 我們已經(jīng)看到了如何使用組件和嵌套組件來創(chuàng)建樹結(jié)構(gòu)。使用帶有路由的單個頁面應(yīng)用的這個視角(perspective), 我們可以將頁面的不同部分視為子級。從這個角度來看, 單頁應(yīng)用中的路由是這樣一種想法, 即我們可以使用一個子樹的一部分并將它與另一個子樹進行切換。然后, 我們可以 動態(tài) 在瀏覽器中切換出不同的樹。
換言之_, 我們將定義一個React組件, 它充當(dāng)可路由元素的 _根 組件。然后, 我們可以告訴React改變一個視圖, 它可以只是交換一個整個React組件為另一個, 雖然它是一個完全不同的頁面渲染的服務(wù)器。
我們將采取我們的App 組件, 并定義所有不同的路由, 我們可以在我們的應(yīng)用在這個 App 組件。我們需要從react-router 包中提取一些組件。我們將用于設(shè)置此結(jié)構(gòu)的這些組件如下:
這是我們用來定義 根 或路由樹的組件。
我們將使用
一個舊的、兼容的處理客戶端導(dǎo)航的方法是使用表示應(yīng)用端點的 # (hash) 標(biāo)記。我們將使用此方法。我們需要導(dǎo)入這個對象來告訴瀏覽器這就是我們想要處理導(dǎo)航的方式。
從我們創(chuàng)建了幾天前的根目錄的應(yīng)用, 讓我們更新我們的 src/App.js 來導(dǎo)入這些模塊。我們將使用不同的名稱語法通過 ES6 導(dǎo)入 BrowserRouter :
import React from "react"; import { BrowserRouter as Router, Route } from "react-router-dom" export class App extends React.Component { render() {{/* routes will go here */} } }
現(xiàn)在, 讓我們在 DOM 中使用在render()函數(shù)中導(dǎo)入的
export class App extends React.Component { // ... render() {{/* routes will go here */} } // ... }
現(xiàn)在, 讓我們定義我們的第一條路由。要定義一個路由, 我們將使用
path - 要激活的路由的路徑
component -定義路由視圖的組件
讓我們在根路徑 / 中定義路由, 并使用只顯示一些靜態(tài)內(nèi)容的無狀態(tài)組件:
const Home = () => () // ... class App extends React.Component { render() { return (Welcome home
) } }
在瀏覽器中加載此頁, 我們可以看到我們在根 url 處得到了一個路由。不是很使人激動。讓我們添加第二條在/about URL 中顯示關(guān)于頁面的路由。
const Home = () => () // ... class App extends React.Component { render() { return (Welcome home
) } }
在我們看來, 我們需要添加一個鏈接 (或一個錨標(biāo)記- ), 使我們的用戶可以自由地在兩個不同的路由之間旅行。但是, 使用 標(biāo)記將告訴瀏覽器處理路由, 就像服務(wù)器端路由一樣。相反, 我們需要使用一個不同的組件 (意外), 稱為: 。
組件需要一個稱為to的屬性, 指向要渲染的客戶端路由。讓我們更新 Home和 About組件以使用Link:
const Home = () => () const About = () => (Welcome home
Go to about)About
Go home
等一下...... 我們不太希望 二個路由都 出現(xiàn)。發(fā)生這種情況的原因是, 響應(yīng)路由器將渲染與路徑匹配的 所有 內(nèi)容 (除非另有指定)。對于這種情況, 響應(yīng)路由器為我們提供了 Switch組件。
const Home = () => (顯示視圖) // ... class App extends React.Component { render() { return (Welcome home
Go to about) } }
雖然這是一個有限的介紹, 我們不能離開討論的處理react路由器, 而不談我們可以得到不同的方式來渲染子組件。
我們已經(jīng)看到了最簡單的方式可能, 使用 component 屬性, 但有一個更強大的方法使用的屬性稱為render。render屬性預(yù)計將是一個函數(shù), 將在match 對象連同location 和路由配置時調(diào)用。
render 屬性允許我們渲染 無論什么 我們想要在一個路由, 其中包括渲染其他路由。很漂亮吧?讓我們來看看這個動作:
const Home = () => () const About = ({ name }) => (Welcome home
Go to about) // ... class App extends React.Component { render() { return (About {name}
) } } ( Ari Nate)} />( )} />Go home ( Home is underneath me)} />
現(xiàn)在我們的應(yīng)用中有多個頁面。我們已經(jīng)研究了如何通過嵌套組件來渲染這些路由, 其中僅有幾個來自react-router 的導(dǎo)出。
react-router 提供了這么多的功能, 我們沒有時間來彌補在我們的快速介紹路由。有關(guān)詳細信息, 可查看下面連接:
https://github.com/reactjs/react-router/tree/master/docs
fullstack react routing
明天, 我們將開始與再現(xiàn)的整合。下面是我們開始集成更復(fù)雜數(shù)據(jù)處理的地方。
文章版權(quán)歸作者所有,未經(jīng)允許請勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請注明本文地址:http://specialneedsforspecialkids.com/yun/84725.html
摘要:今天我們將討論創(chuàng)建組件的最終方案,即無狀態(tài)函數(shù)的純組件。今天我們正在研究一種處理提出的復(fù)雜數(shù)據(jù)的方法,稱為體系結(jié)構(gòu)。第天部署介紹今天,我們將探討部署我們的應(yīng)用所涉及的不同部分,以便外界可以使用我們的應(yīng)用。 本文轉(zhuǎn)載自:眾成翻譯譯者:iOSDevLog鏈接:http://www.zcfy.cc/article/3758原文:https://www.fullstackreact.com/3...
摘要:歸約器函數(shù)負責(zé)返回應(yīng)用當(dāng)前全局狀態(tài)的表示形式。當(dāng)我們在存儲上發(fā)送操作時將使用應(yīng)用的當(dāng)前狀態(tài)和導(dǎo)致狀態(tài)更新的操作來調(diào)用此歸約器函數(shù)。回到我們的歸約器我們可以檢查的動作類型并采取適當(dāng)?shù)牟襟E創(chuàng)建下一個狀態(tài)。我們將處理動作創(chuàng)造者中歸約器的副作用。 本文轉(zhuǎn)載自:眾成翻譯譯者:iOSDevLog鏈接:http://www.zcfy.cc/article/3811原文:https://www.ful...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進,適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
摘要:并總結(jié)經(jīng)典面試題集各種算法和插件前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快速搭建項目。 本文是關(guān)注微信小程序的開發(fā)和面試問題,由基礎(chǔ)到困難循序漸進,適合面試和開發(fā)小程序。并總結(jié)vue React html css js 經(jīng)典面試題 集各種算法和插件、前端視頻源碼資源于一身的文檔,優(yōu)化項目,在瀏覽器端的層面上提升速度,幫助初中級前端工程師快...
閱讀 1682·2019-08-30 15:54
閱讀 3332·2019-08-26 17:15
閱讀 3522·2019-08-26 13:49
閱讀 2582·2019-08-26 13:38
閱讀 2291·2019-08-26 12:08
閱讀 3035·2019-08-26 10:41
閱讀 1369·2019-08-26 10:24
閱讀 3376·2019-08-23 18:35