最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

關于React動態(tài)加載路由處理的相關問題

 更新時間:2019年01月07日 14:53:56   作者:王振寧  
這篇文章主要介紹了關于React動態(tài)加載路由處理的相關問題,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧

前言

相信很多人都遇到過想在React項目中動態(tài)加載路由這種問題,接下來我們逐步實現(xiàn)。

引入必要的依賴

import React from 'react'
import { Router, Route, IndexRoute, hashHistory } from 'react-router'

接下來創(chuàng)建一個component函數(shù)

目的就是為了變?yōu)閞outer的component實現(xiàn)異步加載。

// 異步按需加載component
function asyncComponent(getComponent) {
  return class AsyncComponent extends React.Component {
   static Component = null;
   state = { Component: AsyncComponent.Component };
 
   componentDidMount() {
    if (!this.state.Component) {
     getComponent().then(({default: Component}) => {
      AsyncComponent.Component = Component
      this.setState({ Component })
     })
    }
   }
   //組件將被卸載 
  componentWillUnmount(){ 
    //重寫組件的setState方法,直接返回空
    this.setState = (state,callback)=>{
      return;
    }; 
  }
   render() {
    const { Component } = this.state
    if (Component) {
     return <Component {...this.props} />
    }
    return null
   }
  }
 }

在此說明componentWillUnmount鉤子是為了解決Can only update a mounted or mounting component的這個問題,原因是當離開頁面以后,組件已經(jīng)被卸載,執(zhí)行setState時無法找到渲染組件。

接下來實現(xiàn)本地文件路徑的傳入

 function load(component) {
  return import(`./routes/${component}`)
 }

將已知地址路徑傳遞到一個函數(shù)并把這個函數(shù)作為參數(shù)傳遞到 asyncComponent中這樣asyncComponent就能接收到這個路由的地址了,然后我們要做的就是將這個asyncComponent函數(shù)帶入到router中。

<Router history={hashHistory}>
    <Route name="home" breadcrumbName="首頁" path="/" component={MainLayout}>
      <IndexRoute name="undefined" breadcrumbName="未定義" component={() => <div>未定義</div>}/>
      <Route name="Development" breadcrumbName="施工中" path="Development" component={DevelopmentPage}/>
      <Route breadcrumbName="個人助理" path="CustomerWorkTodo" component={({children}) => <div className="box">{children}</div>}>
        <Route name="Agency" breadcrumbName="待辦事項" path="Agency" component={asyncComponent(() => load('GlobalNotification/CustomerWorkAssistantTodo/CustomerAgencyMatter'))}/>
        <Route name="Already" breadcrumbName="已辦事項" path="Already" component={asyncComponent(() => load('GlobalNotification/CustomerWorkAssistantTodo/CustomerAlreadyMatter'))}/>
        <Route name="SystemMessage" breadcrumbName="系統(tǒng)消息" path="SystemMessage/:data" component={asyncComponent(() => load('GlobalNotification/SystemMessage/SystemMessage'))}/>
        <Route name="SystemMessagePer" breadcrumbName="系統(tǒng)消息詳情" path="SystemMessagePer/:data" component={asyncComponent(() => load('GlobalNotification/SystemMessage/SystemMessagePer'))}/>
      </Route>
    </Router>
 </Router>    

從代碼中可以看出已經(jīng)實現(xiàn)了router 的component 的引入,這樣自然就可以通過一個循環(huán)來實現(xiàn)動態(tài)的加載啦!

以上就是本文的全部內容,希望對大家的學習有所幫助,也希望大家多多支持腳本之家。

相關文章

  • React和Vue的props驗證示例詳解

    React和Vue的props驗證示例詳解

    這篇文章主要介紹了React和Vue的props驗證,本文通過示例代碼給大家介紹的非常詳細,對大家的學習或工作具有一定的參考借鑒價值,需要的朋友可以參考下
    2022-08-08
  • React實現(xiàn)預覽展示docx和Excel文件

    React實現(xiàn)預覽展示docx和Excel文件

    這篇文章主要為大家詳細介紹了如何使用React實現(xiàn)預覽展示docx和Excel文件,文中的示例代碼講解詳細,感興趣的小伙伴可以跟隨小編一起學習一下
    2024-02-02
  • 基于react組件之間的參數(shù)傳遞(詳解)

    基于react組件之間的參數(shù)傳遞(詳解)

    下面小編就為大家?guī)硪黄趓eact組件之間的參數(shù)傳遞(詳解)。小編覺得挺不錯的,現(xiàn)在就分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2017-09-09
  • 深入理解React中Suspense與lazy的原理

    深入理解React中Suspense與lazy的原理

    在react中為我們提供了一個非常有用的組件,那就是Suspense,本文主要介紹了如何使用Suspense?和?react提供的lazy結合起來達到異步加載狀態(tài)的目的,感興趣的可以了解下
    2024-04-04
  • React 中引入 CSS 高階用法的方案詳解

    React 中引入 CSS 高階用法的方案詳解

    這篇文章主要介紹了React中引入CSS高階用法的方案詳解,至于使用react用哪種方案引入css,并沒有一個絕對的答案,可以根據(jù)各自情況選擇合適的方案,需要的朋友可以參考下
    2024-02-02
  • React中使用react-json-view展示JSON數(shù)據(jù)的操作方法

    React中使用react-json-view展示JSON數(shù)據(jù)的操作方法

    react-json-view是一個用于顯示和編輯javascript數(shù)組和JSON對象的React組件,本文給大家分享React中使用react-json-view展示JSON數(shù)據(jù)的操作方法,感興趣的朋友一起看看吧
    2023-12-12
  • React使用Electron開發(fā)桌面端的詳細流程步驟

    React使用Electron開發(fā)桌面端的詳細流程步驟

    React是一個流行的JavaScript庫,用于構建Web應用程序,結合Electron框架,可以輕松地將React應用程序打包為桌面應用程序,本文詳細介紹了使用React和Electron開發(fā)桌面應用程序的步驟,需要的朋友可以參考下
    2023-06-06
  • React超詳細分析useState與useReducer源碼

    React超詳細分析useState與useReducer源碼

    我正在處理的組件是表單的時間輸入。表單相對復雜,并且是動態(tài)生成的,根據(jù)嵌套在其他數(shù)據(jù)中的數(shù)據(jù)顯示不同的字段。我正在用useReducer管理表單的狀態(tài),到目前為止效果很好
    2022-11-11
  • React注冊倒計時功能的實現(xiàn)

    React注冊倒計時功能的實現(xiàn)

    這篇文章主要介紹了React注冊倒計時功能的實現(xiàn),小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-09-09
  • React實現(xiàn)倒計時功能組件

    React實現(xiàn)倒計時功能組件

    這篇文章主要為大家詳細介紹了如何通過React實現(xiàn)一個倒計時功能組件,文中的示例代碼講解詳細,具有一定的學習價值,感興趣的小伙伴可以了解下
    2023-09-09

最新評論

富阳市| 太谷县| 甘肃省| 齐河县| 光泽县| 新营市| 铁力市| 贡嘎县| 南川市| 易门县| 马山县| 湟中县| 化州市| 永善县| 大竹县| 长沙市| 建阳市| 高碑店市| 湖州市| 淮安市| 大兴区| 定西市| 方山县| 泾川县| 罗平县| 南京市| 时尚| 广东省| 枝江市| 凤冈县| 临安市| 中卫市| 天镇县| 桃源县| 宜昌市| 扶余县| 含山县| 建湖县| 法库县| 项城市| 宁夏|