安装依赖:
yarn add react-loadable
创建通用工具类:
src/util/loadable.js
/*路由懒加载(异步组件)*/ import React from 'react'; import Loadable from 'react-loadable'; //通用的过场组件 const LoadingComponent =()=>{ return ( <div>loading</div> ) } //过场组件默认采用通用的,若传入了loading,则采用传入的过场组件 export default (loader,loading = LoadingComponent)=>{ return Loadable({ loader, loading }); }
router里面调用方式改为如下
/*配置路由*/ import React, { Fragment } from 'react' import { BrowserRouter, Route } from 'react-router-dom' import loadable from '../util/loadable' const Home = loadable(()=>import('@pages/home')) const Routes = () => ( <BrowserRouter> <Route path="/home" component={Home}/> </BrowserRouter> ); export default Routes
封装之后,laodable只需写一次,改变的只是组件的引入方式,这样一来就方便多了,
react-loadable是以组件级别来分割代码的,这意味着,我们不仅可以根据路由按需加载,还可以根据组件按需加载,使用方式和路由分割一样,只用修改组件的引入方式即可