样式化组件在样式化对象中使用功能

时间:2020-04-01 16:07:26

标签: javascript css styled-components css-in-js

找不到清晰的示例如何在带有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)}`,
}));

1 个答案:

答案 0 :(得分:1)

要解决道具提取问题,您应该可以执行以下操作:

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

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