如何在 ant-design 组件中使用 css-in-js?

Posted

技术标签:

【中文标题】如何在 ant-design 组件中使用 css-in-js?【英文标题】:How to use css-in-js in ant-design components? 【发布时间】:2020-01-23 20:30:22 【问题描述】:

实际上,我继承了一个 ReactJS Web 应用程序,它由 CRA 和 Ant-Design 初始化。我刚刚使用 Material-UI,没有使用 And Design 的经验。

Material-UI 处理样式的方式很棒,但 AntD 使用 less 处理 CSS。我很难像古人一样工作。

我搜索了很多,但没有找到在 Ant Design 项目中使用 JSS[CSS in JS] 的方法。

我的意思如下:

import  AntDCompo  from 'antd';
import  Styled , injectStyled  from 'react-jss';

const MyCompo = ( classes ) => (
  <AntDCompo className=classes.container />
);

const styles = Styled(
  container: 
    color: '#f00',
  ,
);

export default injectStyled(styles)(MyCompo);

但是在 Ant Design 文档中只是像古老的东西一样声明:

import  AntDCompo  from 'antd';
import styles from 'myCompoStyles.less';

const MyCompo = () => (
  <AntDCompo className=styles.container />
);

我该怎么做?或者有什么方法可以将 JSS 用于 AndD 组件?

【问题讨论】:

【参考方案1】:

就像每个 CSS-in-JS 一样,您可以针对普通的 CSS-properties:

import  Icon  from 'antd';
const DarkHoverStyle = styled(Icon)`
  color: gray;
  :hover 
    color: palevioletred;
  
`;

在某些情况下,您可能需要定位特定的antd CSS 类

const GlobalStyle = createGlobalStyle`
  .ant-tooltip-inner 
    background-color: palevioletred;
    color: black;
  
`;

在下一个示例中,我们设置了Icon 的悬停颜色和Tooltip 组件的默认样式(更改了默认的黑色背景):

export default function App() 
  return (
    <FlexBox>
      <GlobalStyle />
      <Tooltip title="Github Icon">
        <DarkHoverStyle type="github" style= fontSize: 100  />
      </Tooltip>
    </FlexBox>
  );

【讨论】:

以上是关于如何在 ant-design 组件中使用 css-in-js?的主要内容,如果未能解决你的问题,请参考以下文章

如何更改 Ant-Design 'Select' 组件的样式?

ant-design的Table组件自定义空状态

Ant-Design CSS 未正确加载

使用dva和ant-design组件在IE中的兼容问题记录

React & Ant-Design 应用 —— 自适应居中组件(Grid栈格设置布局Space间距设置)

React & Ant-Design 应用 —— 自适应居中组件(Grid栈格设置布局Space间距设置)