按需加载

为了解决在生产环境文件体积过大的问题, React Suite 支持 ES Module,您可以通过打包工具的 Tree Shaking 功能去掉文件中无用的代码。

如果您当前的开发环境不支持 Tree Shaking, 可以采用以下两种方案。

方案一:手动引入

手动引入,需要在写代码的时候就只引入用到的文件,比如只使用 Button 组件:

import Button from 'rsuite/lib/Button';

引入对应的样式文件:

import Button from 'rsuite/lib/Button';
+ import 'rsuite/lib/Button/styles';  // 引入默认样式 less

也可以引入指定主题样式:

import Button from 'rsuite/lib/Button';
+ import 'rsuite/lib/Button/styles/themes/dark';  // 引入 dark 主题的 less

方案二:使用 babel-preset-rsuite

使用 babel-preset-rsuite 可以在 Babel 编译阶段把代码转换成按需引入的方式。

安装 babel-preset-rsuite

$ npm install babel-preset-rsuite --save-dev

使用

// .babelrc or babel-loader option
{
  "presets": ["rsuite"]
}

示例:

// Transforms:
import { Button } from 'rsuite';

// Roughly to:
var _Button = require('rsuite/lib/Button');

参数配置

// .babelrc or babel-loader option
{
  "presets": [["rsuite", { "style": true, "theme": "dark" }]]
}
  • style (boolean) , 按需引入样式文件。
  • theme ('default'|'dark'), 引入指定主题的样式文件,默认:'default'。

示例:

// Transforms:
import { Button } from 'rsuite';

// Roughly to:
require('rsuite/lib/Button/styles/themes/dark.less');
var _Button = require('rsuite/lib/Button');

禁用 HTML 相关样式的 reset

在 rsuite 中我们默认修改了一些 HTML 样式,如果您不需要这些样式,则需要配置不引入这些样式,这里以 less-loader 配置为例:

{
    test: /\.less$/,
    loader: 'less-loader',
    options: {
        // 如果使用 less-loader@5 或者更老的版本 ,请移除 lessOptions 这一级直接配置选项。
        lessOptions: {
          javascriptEnabled: true,
          modifyVars: { '@reset-import': false }
        }
    }
}
🎉 v5 版本已经发布! 前往 v5 文档开始使用.