作家
登录

【翻译】基于 Create React App路由4.0的异步组件加载(Code Splitting)

作者: 来源: 2017-07-07 12:05:26 阅读 我要评论

基于 Create React App路由4.0的异步组件加载

本文┞仿是一个额外的篇章,它可以在你的React app中,赞助加快初始的加载组件时光。当然这个操作不是完全须要的,但如不雅你好奇的话,请随便跟随这篇文┞仿一路用Create React App和 react路由4.0的异步加载方法来赞助react.js构建大年夜型应用。

代码瓜分(Code Splitting)

代码瓜分和 react-router

在我们 react app 中,常见的路由设备可能是像下面一样的

  1. /* Import the components */ 
  2. import Home from './containers/Home'
  3. import Posts from './containers/Posts'
  4. import NotFound from './containers/NotFound'
  5.  
  6.  
  7. /* Use components to define routes */ 
  8. export default () => ( 
  9.   <Switch> 
  10.     <Route path="/" exact component={Home} /> 
  11.     <Route path="/posts/:id" exact component={Posts} /> 
  12.     <Route component={NotFound} /> 
  13.   </Switch> 
  14. );  

我们一开端惹人这些组件,然后定义好的路径,会根据我们的路由去匹拍┞封些组件。

然则,我们静态地在顶部导入路由中的所有组件。这意味着,不管哪个路由匹配,所有这些组件都被加载。我们只想加载对匹配路由的时刻才加载响应的组件。下面我们一步步来完成这个任务。

创建一个js 文件,如:src/components/AsyncComponent.js,代码如下

  1. import React, { Component } from 'react'
  2.  
  3. export default function asyncComponent(importComponent) { 
  4.  
  5.   class AsyncComponent extends Component { 
  6.  
  7.     constructor(props) { 
  8.       super(props); 
  9.  
  10.       this.state = { 
  11.         component: null
  12.       }; 
  13.     } 
  14.  
  15.     async componentDidMount() { 
  16.       const { default: component } = await importComponent(); 
  17.  
  18.       this.setState({ 
  19.         component: component 
  20.       }); 
  21.     } 
  22.  
  23.     render() { 
  24.       const C = this.state.component; 
  25.  
  26.       return C 
  27.         ? <C {...this.props} /> 
  28.         : null
     1/4    1 2 3 4 下一页 尾页

      推荐阅读

      浪潮将发布服务器新品 聚焦智慧计算

    【51CTO.com原创稿件】 2017年7月6日,海潮经由过程其官方微信宣布了将于7月12日宣布其新一代办事器&mdash;&m>>>详细阅读


    本文标题:【翻译】基于 Create React App路由4.0的异步组件加载(Code Splitting)

    地址:http://www.17bianji.com/lsqh/36075.html

关键词: 探索发现

乐购科技部分新闻及文章转载自互联网,供读者交流和学习,若有涉及作者版权等问题请及时与我们联系,以便更正、删除或按规定办理。感谢所有提供资讯的网站,欢迎各类媒体与乐购科技进行文章共享合作。

网友点评
自媒体专栏

评论

热度

精彩导读
栏目ID=71的表不存在(操作类型=0)