91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

React-router v4路由配置的示例分析

發布時間:2021-08-18 14:04:42 來源:億速云 閱讀:102 作者:小新 欄目:web開發

這篇文章主要介紹了React-router v4路由配置的示例分析,具有一定借鑒價值,感興趣的朋友可以參考下,希望大家閱讀完這篇文章之后大有收獲,下面讓小編帶著大家一起了解一下。

一. Switch 、Router 、Route三者的區別

1、Route

Route 是建立location 和 ui的最直接聯系

2、Router

react-router v4 中,Router被拆分成了StaticRouter、MemoryRouter、BrowserRouter、HashRouter、NativeRouter。

MemoryRouter、BrowserRouter、HashRouter 等于

import { Router } from 'react-router'
<!--這里可以有三種-->
<!--history 部分源碼
exports.createBrowserHistory = _createBrowserHistory3.default;
exports.createHashHistory = _createHashHistory3.default;
exports.createMemoryHistory = _createMemoryHistory3.default;
-->
import createBrowserHistory from 'history/createBrowserHistory'
//
const history = createBrowserHistory()

<Router history={history}>
 <App/>
</Router>

NativeRouter(給rn使用的)

A <Router> for iOS and Android apps built using React Native.

這里新增strict 和 exact

使用了strict location 大于等于path才能匹配,eq path='/one' location='/one/a'能匹配。

使用了exact location 約等于 path 才能匹配,eq path='/one' location='/one'或者 '/one/'能匹配,所以說是約等于。

使用了exact 和 strict location = path才能匹配

StaticRouter(后續補充)

3、Switch

這是v4版本中新添加,主要用來做唯一匹配的功能。就是想要在眾多路由中只匹配其中一個路由。

二、v4 版本中路由應該如何配置呢?

1.基本配置(這個和v3中基本一致,效果也基本一樣)

匹配 <= location eq.( /b => / + /b ) ( / => / )

 <BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <div>
     <Route path="/" component={aContainer} />
     <Route path="/b" component={bContainer} />
   </div>
  </BrowserRouter>

2.含Switch 配置

匹配 <= location eq.( /b => /b ) ( / => / ) 唯一匹配

 <BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <Switch>
       //這里用exact,僅僅是擔心location被 path='/'截胡了。
     <Route exact path="/" component={aContainer} />
     <Route path="/b" component={bContainer} />
   </Switch>
  </BrowserRouter>

問題(三個問題)

1.如何設置公共的Component

第一種方式

 <BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <div>
     <Route path="/" component={aContainer} />
     <Route path="/b" component={bContainer} />
   </div>
  </BrowserRouter>

第二種方式(父子嵌套)

 <BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <div >
    <Route path="/" component={aContainer} />
    <Route path="/b" component={Parent} />
    {/* {app()} */}
   </div>
  </BrowserRouter>
const Parent = ({ match }) => (
 <div>
  <Route path={`${match.url}/`} component={bContainer} />
  <Route path={`${match.url}/c`} component={cContainer} />
  <Route path={`${match.url}/d`} component={dContainer} />
 </div>
);

這種情況 bContainer就是是公用的Component

2.如何設置getComponent,按需加載

另一篇文章 

3.是否有簡化寫法

npm install --save react-router-config

第一步 配置路由

const routes = [
 { component: bContainer,
  routes: [
   { path: '/',
    exact: true,
    component: bContainer
   },
   { path: '/b/b',
    component: bContainer,
    routes: [
     { path: '/b/b/b',
      component: bContainer
     }
    ]
   }
  ]
 }
]

第二步 設置路由

<BrowserRouter forceRefresh={!supportsHistory} keyLength={12}>
   <div >
     {renderRoutes(routes)}
   </div>
 </BrowserRouter>

第三步 需要在container的render中去調用方法

 <div>
 1111
 {renderRoutes(this.props.route.routes)}
</div>

這個優勢是可以統一配置,劣勢是需要在container中統一調用,但是這個抽出來統一實現,問題也不大,并且還可以解決 問題一。

這個renderRoutes實際是就是用一層Switch和多個Route來包了一層。

React-router v4路由配置的示例分析

感謝你能夠認真閱讀完這篇文章,希望小編分享的“React-router v4路由配置的示例分析”這篇文章對大家有幫助,同時也希望大家多多支持億速云,關注億速云行業資訊頻道,更多相關知識等著你來學習!

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

丘北县| 诸暨市| 崇左市| 富阳市| 昭觉县| 高清| 邵武市| 宕昌县| 江津市| 淳安县| 阿克苏市| 乌什县| 修水县| 山东| 尉氏县| 晋州市| 象州县| 伊宁市| 巨野县| 双柏县| 玛纳斯县| 宁化县| 安阳县| 石阡县| 乐东| 屯门区| 泾源县| 莫力| 屏边| 横山县| 荔浦县| 玉林市| 五河县| 梨树县| 玛多县| 万山特区| 邹城市| 池州市| 哈巴河县| 海南省| 平陆县|