样式化组件在样式化对象中使用函数

Styled-components use function in styled object

无法找到如何在 styled-components 的 css 对象中使用函数的清晰示例。它不会抛出错误,但在提取道具时,背景不会添加到 CSS 输出,如下例所示。

// Simple color function
const color = (error) => {
 if (error) {
   return 'red'
 }
 return 'black',
}

作品 - css

const StyledInput = styled.input<InputProps>`
  background: ${({ error }) => color(error)};`;

工作 - css对象

const StyledInput = styled.input<InputProps>(props => ({
  background: color(), // !!! NEED error from props
}));

不工作 - css 对象

const StyledInput = styled.input<InputProps>(props => ({
  background: `${({ error }) => color(error)}`,
}));

要解决道具提取问题,您应该可以这样做:

// Simple color function
const color = (error) => {
  if (error) {
    return 'red';
  }
  return 'black';
};

const StyledInput = styled.input<InputProps>(({ error, ...props }) => ({
  background: color(error),
}));