最新公告
  • 欢迎您光临起源地模板网,本站秉承服务宗旨 履行“站长”责任,销售只是起点 服务永无止境!立即加入钻石VIP
  • React学习----路由懒加载

    正文概述 掘金(起再好的名字也中不了奖)   2021-01-16   603

    React 使用webpack 打包时,会生成一个main.js的文件。当页面组件增多时,main.js 也跟着变大,从而减慢页面的加载速度。使用 compression-webpack-plugin 配合 nginx,将文件压缩,这种方法可行,但是加载首页的时候,效果还是不理想。于是,想到了把main.js 拆分多个。从而减少首屏js大小,加快加载速度。

    未用懒加载

    Index 组件:

    class Index extends React.Component {
       ...
    }
    export default Index;
    

    路由引用:

    import { Route,Switch } from 'react-router-dom';
    import indexcomfrom '../views/index/index';
    class RouterConfig extends React.Component{
       render(){
           return(
           
                   <Switch>
     ...
     <Route exact path="/" component={ indexcom } />
    ...
                   </Switch>
       
           )
       }
    }
    export default RouterConfig;
    

    这种方式打包,会把代码全部打包在main.js中。

    用懒加载

    两种方式可实现:

    1. 使用 React 中 Suspense,lazy
    2. 使用 react-loadable

    当使用路由懒加载,在组件中使用 import 引用 css 时,报错。 improt './index.css' /// main.4d17afb4df2a6b00a18c.js?4d17afb4df2a6b00a18c:1 Uncaught (in promise) TypeError: Cannot read property 'call' of undefined 未解决,于是便把样式全部放进 入口 index.js 中引用。

    React 中 Suspense,lazy

    1. 创建main.js :
     ```
      class Main extends React.Component  {
        
      }
      export const MainCom = Main 
     ```
    
     
    
    1. 创建maincom.js
      export { MainCom as default } from "./main";
    
    1. 路由引用
     import { Route,Switch } from 'react-router-dom';
    const MainCom = lazy(() => import('../views/main/maincom') );
    class RouterConfig extends React.Component{
     render(){
         return(
          <Suspense fallback={ <div> 加载中  </div> }>
                 <Switch>
    ...
    <Route exact path="/" component={ MainCom } />
    ...
                 </Switch>
     
     </Suspense>
         )
     }
    }
    export default RouterConfig;
    

    react-loadable

    1. login 组件:
    class Loginextends React.Component {
       ...
    }
    export default Login;
    
    1. 路由加载
     import { Route,Switch } from 'react-router-dom';
    import Loadable from 'react-loadable';
     const logincom = Loadable({
       loader : () => import('../views/login/login'),
       loading() {
       return <div>正在加载</div>
     },
     })
    class RouterConfig extends React.Component{
       render(){
           return(
            <Suspense fallback={ <div> 加载中  </div> }>
                   <Switch>
     ...
     <Route exact path="/" component={ logincom } />
    ...
                   </Switch>
       
       </Suspense>
           )
       }
    }
    export default RouterConfig;
    
    

    起源地下载网 » React学习----路由懒加载

    常见问题FAQ

    免费下载或者VIP会员专享资源能否直接商用?
    本站所有资源版权均属于原作者所有,这里所提供资源均只能用于参考学习用,请勿直接商用。若由于商用引起版权纠纷,一切责任均由使用者承担。更多说明请参考 VIP介绍。
    提示下载完但解压或打开不了?
    最常见的情况是下载不完整: 可对比下载完压缩包的与网盘上的容量,若小于网盘提示的容量则是这个原因。这是浏览器下载的bug,建议用百度网盘软件或迅雷下载。若排除这种情况,可在对应资源底部留言,或 联络我们.。
    找不到素材资源介绍文章里的示例图片?
    对于PPT,KEY,Mockups,APP,网页模版等类型的素材,文章内用于介绍的图片通常并不包含在对应可供下载素材包内。这些相关商业图片需另外购买,且本站不负责(也没有办法)找到出处。 同样地一些字体文件也是这种情况,但部分素材会在素材包内有一份字体下载链接清单。
    模板不会安装或需要功能定制以及二次开发?
    请QQ联系我们

    发表评论

    还没有评论,快来抢沙发吧!

    如需帝国cms功能定制以及二次开发请联系我们

    联系作者

    请选择支付方式

    ×
    迅虎支付宝
    迅虎微信
    支付宝当面付
    余额支付
    ×
    微信扫码支付 0 元