最新消息:看到那些跳动的图片、文字了吗?点击点击 O(∩_∩)O~~

create-react-app dynamic import 按需加载(懒加载)

若思若想 onlyling 6815浏览

create-react-app

目前 react-scripts 中的 webpack 版本是 3.8.1

react-app-rewired

中间涉及到修改 Babel 的配置,说以选择了它。

编辑routerMap

借鉴了下面这个做法。

webpack v3 结合 react-router v4 做 dynamic import — 按需加载(懒加载)

在项目根目录中 config-overrides.js 中添加

const { injectBabelPlugin } = require('react-app-rewired');

module.exports = function override(config, env) {
    // 就是这句
    config = injectBabelPlugin(['syntax-dynamic-import'], config);
    return config;
};

安装依赖

npm i --save-dev babel-plugin-syntax-dynamic-import

npm i --save react-loadable

添加 loading 组件

import React from 'react';

const MyLoadingComponent = ({ isLoading, error }) => {
    // Handle the loading state
    if (isLoading) {
        return <div>Loading...</div>;
    }
    // Handle the error state
    else if (error) {
        return <div>Sorry, there was a problem loading the page.</div>;
    }
    else {
        return null;
    }
};

需要异步加载的组件、路由组件

import Loadable from 'react-loadable';

const ProductList = Loadable({
    loader: () => import('../pages/product/list'),
    loading: MyLoadingComponent
});

转载请注明:OnlyLing - Web 前端开发者 » create-react-app dynamic import 按需加载(懒加载)