React.js之Ant Design(Antd)样式无效

Antd是蚂蚁金服开发的一个开源库,很多国内和国外的前端程序员在工作中都会使用。作为一个优秀的前端库,它所能实现的前端特效简约而又大气,给不少程序员留下好感。

Antd的安装方法在此就不赘述了,它的官网上一步一步写的非常清楚。

Antd的使用方法按理来说应该也比较简单。按照官网提供的实例,把代码复制下来,再依据自己的实际情况进行简单调整,就应该能够满足需求。

但本人在使用Antd开发时遇到如下问题,将官网的实例代码Copy到自己项目后,其中的提供的样式代码不生效。这里以Grid为例,如下图所示。

import { Row, Col } from 'antd';

ReactDOM.render(
  <div className="gutter-example">
    <Row gutter={16}>
      <Col className="gutter-row" span={6}>
        <div className="gutter-box">col-6</div>
      </Col>
      <Col className="gutter-row" span={6}>
        <div className="gutter-box">col-6</div>
      </Col>
      <Col className="gutter-row" span={6}>
        <div className="gutter-box">col-6</div>
      </Col>
      <Col className="gutter-row" span={6}>
        <div className="gutter-box">col-6</div>
      </Col>
    </Row>
    <Row gutter={[{ xs: 8, sm: 16, md: 24, lg: 32 }, 20]}>
      <Col className="gutter-row" span={6}>
        <div className="gutter-box">col-6</div>
      </Col>
      <Col className="gutter-row" span={6}>
        <div className="gutter-box">col-6</div>
      </Col>
      <Col className="gutter-row" span={6}>
        <div className="gutter-box">col-6</div>
      </Col>
      <Col className="gutter-row" span={6}>
        <div className="gutter-box">col-6</div>
      </Col>
    </Row>
  </div>,
  mountNode,
);
 /*以下样式代码不生效*/
.gutter-example .ant-row > div {
  background: transparent;
  border: 0;
}
.gutter-box {
  background: #00a0e9;
  padding: 5px 0;
}           

要知道,我使用Antd就是为了它的样式啊。于是,在网上搜索了相关信息,找到了解决办法。其实,在Antd官网已经提供了解决方案。但是,包括我在内的大多数人,阅读完安装说明,直接找到自己需求的组件进行开发,而没有将官方文档完整的读一遍,导致遇到问题时一头雾水。

解决方法:

https://ant.design/docs/react/use-with-create-react-app-cn#%E4%BD%BF%E7%94%A8-babel-plugin-import

引入 react-app-rewired 并修改 package.json 里的启动配置。由于新的 react-app-rewired@2.x 版本的关系,你还需要安装 customize-cra。

`yarn add react-app-rewired customize-cra`
/* package.json */
"scripts": {
	-   "start": "react-scripts start",
	+   "start": "react-app-rewired start",
	-   "build": "react-scripts build",
	+   "build": "react-app-rewired build",
	-   "test": "react-scripts test",
	+   "test": "react-app-rewired test",
}

然后在项目根目录创建一个 config-overrides.js 用于修改默认配置。

module.exports = function override(config, env) {
  	// do stuff with the webpack config...
 	return config;
};

使用 babel-plugin-import,尝试安装它并修改 config-overrides.js 文件。

yarn add babel-plugin-import
+ const { override, fixBabelImports } = require('customize-cra');
- module.exports = function override(config, env) {
-   // do stuff with the webpack config...
-   return config;
- };
+ module.exports = override(
+   fixBabelImports('import', {
+     libraryName: 'antd',
+     libraryDirectory: 'es',
+     style: 'css',
+   }),
+ );

最后重启。

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值