React动态import()

react-router@v4代码分离,推荐的import()。这里分享webpack配置和使用方法。

首先安装两个必须的包

cnpm i react-loadable babel-plugin-syntax-dynamic-import -D

react-loadable是官方推荐的动态加载组件,babel-plugin-syntax-dynamic-import是babel支持webpack的import()插件。

配置方法:在.babelrc

{
"presets": [
"react"
],
"plugins": [
"syntax-dynamic-import"
]
}

上面babel-plugin前缀是可以省略的。

上面配好后,如果你配了eslint还是会报错的,如果eslint配置不对。报import() undefined

要保证eslint不报import()错误需要

cnpm i babel-eslint -D

然后在.eslintrc加上配置

module.exports = {
//...若干配置 parser: "babel-eslint"
}

使用babel-eslint解析才可以识别import()

然后就是使用了_

这里我把官方的demo封装成了一个文件loadable.jsx

import React from 'react'
import Loadable from 'react-loadable' const Loading = () => {
return <div>loading...</div>
} export default (Loader) => {
const LoadableComponent = Loadable({
loader: Loader,
loading: Loading
}) return class LoadableHOC extends React.Component {
render () {
return <LoadableComponent></LoadableComponent>
}
}
}

随便写一个需要动态导入的组件Import.jsx

import React from 'react'

class Import extends React.Component {
render () {
return <div>import...</div>
}
} export default Import

包含的动态导入的容器组件Test.jsx

import React from 'react'
import loadable from '@/utils/loadable' const Import = loadable(() => import('@/components/Import')) class Test extends React.Component {
render () {
return (<div>
<Import></Import>
</div>)
}
} export default Test

然后在main.jsx

import React from 'react'
import ReactDom from 'react-dom'
import Test from '@/components/Test' ReactDom.render(<Test />, document.getElementById('app'))

React动态import()的更多相关文章

  1. react动态路由以及获取动态路由

    业务中会遇到点击列表跳转到详情页, 1.在index.js修改我们的跟组件 新建router2的文件 import React from 'react' import { HashRouter as ...

  2. 如何使用classnames模块库为react动态添加class类样式

    摘要 在react中添加动态的css时,传统的方式较为繁琐,今天刚好学习到一个模块库可以便捷的解决这个问题.对的,它就是“classnames”. classnames模块库 npm安装 npm in ...

  3. react 动态渲染echarts折线图,鼠标放大缩小

    //折线图组件import React,{Component} from 'react'; import ReactEcharts from 'echarts-for-react'; class Ec ...

  4. python3 动态import

    有些情况下,需要动态的替换引入的包 1.常用的import方法 import platform import os 2.__import__ 动态引用 loop_manager = __import_ ...

  5. react 动态修改 document.title

    装饰器 // withComponents/withHeaderBar.js import React, { Component } from "react"; import He ...

  6. Element + Vue I18n动态import加载国际化语言包翻译文件

    需求 项目为多页应用,包含产品a.b.c.d.e,每个产品都有自己的翻译文件.一次加载所有翻译文件是极度不合理的.于是考虑动态加载. 实现 参考官方文档:延迟加载翻译 项目结构 │ ├── dist ...

  7. vite 动态 import 引入打包报错解决方案

    关注公众号: 微信搜索 前端工具人 ; 收货更多的干货 原文链接: 自己掘金文章 https://juejin.cn/post/6951557699079569422/ 关注公众号: 微信搜索 前端工 ...

  8. react动态添加样式:style和className

    react开发过程中,经常会需要动态向元素内添加样式style或className,那么应该如何动态添加呢??? 一.react向元素内,动态添加style 例如:有一个DIV元素, 需要动态添加一个 ...

  9. react 动态获取数据

    如果reander()里面的dom元素是动态获取的,就要将函数放到setSTATE()里面执行

随机推荐

  1. 关于HTML5画布canvas的功能

    一.画布的使用 1.首先创建一个画布(canvas) <canvas id=”myCanvas” width=”200” height=”100” style=”border:1px solid ...

  2. ignoring option MaxPermSize=256m; support was removed in 8.0 - unsupported JVM property

    MaxPermSize 在JVM8 中已经被删除. 可以使用 JAVA_OPTS="-Xms1303m -Xmx1303m -XX:MaxPermSize=256m 参考 https://b ...

  3. 上传、裁剪图片-----Jcrop图片裁剪插件

    Jcrop文档:http://code.ciaoca.com/jquery/jcrop/C#裁剪:http://www.cnblogs.com/xyang/archive/2013/02/25/293 ...

  4. (转)linux下控制帐户过期的多种方法

    linux下控制帐户过期的方法:原文:http://blog.51cto.com/oldboy/1289144企业里一般给无人管理的角色账户或开发人员临时需求等可以设定账户有效期,提升安全!法一:添加 ...

  5. 前端js编码

    1.首先是encodeURI和encodeURIComponent: 从名字可以清晰的看出他两都是主要用于url编码的,那之间有什么区别呢?唯一区别就是编码的字符范围,其中 encodeURI方法不会 ...

  6. document.getElementById(...) is null

    <html> <head> <script type="text/javascript"> document.getElementById('b ...

  7. linux下火狐浏览器安装flash player插件

    1 去官方网站下载flash player 安装包.后缀名为.tar.gz,假设名称为flash.tar.gz 默认在桌面 2 下载后解压缩,使用以下命令 #tar -zxvf /root/Deskt ...

  8. LCA 离线做法tarjan

    tarjan(int u) { int v; for(int i=h[u];i;i=nex[i])//搜索边的 { v=to[i]; tarjan(v); marge(u,v); vis[v]=; } ...

  9. 【转】HEIF图片存储格式探秘

    HEIF图片存储格式探秘 2017年12月11日 18:30:43 阅读数:891 HEIF,High Efficiency Image File Format,即高效率图档格式,是由动态图像专家组( ...

  10. 【js类库AngularJs】解决angular+springmvc的post提交问题

    [js类库AngularJs]解决angular+springmvc的post提交问题 AngularJS诞生于2009年,由Misko Hevery 等人创建,后为Google所收购.是一款优秀的前 ...