了解样式化组件中的 CSS 辅助函数

Posted

技术标签:

【中文标题】了解样式化组件中的 CSS 辅助函数【英文标题】:Understanding css helper function in styled components 【发布时间】:2022-01-21 04:35:25 【问题描述】:

样式化组件有一个帮助器css 函数。但我不明白我应该什么时候使用它。

例如,这是他们使用它的示例:

import styled,  css  from 'styled-components'

const complexMixin = css`
  color: $props => (props.whiteColor ? 'white' : 'black');
`

const StyledComp = styled.div`
  /* This is an example of a nested interpolation */
  $props => (props.complex ? complexMixin : 'color: blue;');
`

但如果我们从此处的文档中获取类似的示例,他们不会使用它:

const Button = styled.button`
  /* Adapt the colors based on primary prop */
  background: $props => props.primary ? "palevioletred" : "white";
  color: $props => props.primary ? "white" : "palevioletred";

  font-size: 1em;
  margin: 1em;
  padding: 0.25em 1em;
  border: 2px solid palevioletred;
  border-radius: 3px;
`;

他们的描述也不清楚,让我很困惑:

从模板文字生成 CSS 的辅助函数 插值。如果您返回模板文字,则需要使用它 由于标记模板的方式,在插值内具有函数 文字在 javascript 中工作。

有人可以帮助解释我们为什么需要它吗?

PS 这个answer 也不用了

【问题讨论】:

【参考方案1】:

我在为组件创建变体时使用 css 函数:

那是变体切换器:

const sizeVariant: Record<NonNullable<StyledLogoProps['size']>, ReturnType<typeof css>> = 
  small: css`
    width: 44px;
    height: 44px;
  `,
  regular: css`
    width: 93px;
    height: 93px;
  `,
;

即组件是由 'styled-components' 创建的:

interface StyledLogoProps 
  size: 'small' | 'regular';


export const StyledLogo = styled.div<StyledLogoProps>`
  $( size ) => sizeVariant[size]
`;

这是反应中的用途:

<>
  <StyledLogo size="regular" />
  <StyledLogo size="small" />
</>

很有用的东西

【讨论】:

以上是关于了解样式化组件中的 CSS 辅助函数的主要内容,如果未能解决你的问题,请参考以下文章

在 React Native 中的组件挂载之前调用带有参数的辅助函数

vuex中的辅助函数mapMutations详细解析

如何提取 useTranslate 作为辅助函数而不是组件?

mapState辅助函数

Plotly:样式化辅助 x 轴

css 辅助功能样式