使用 Emotion.sh 从样式化组件传递道具

Passing props along from styled component using Emotion.sh

我使用 @emotion\styled 声明了以下样式按钮:

const Button = styled.button`
 background: blue;
 ${size({
  width: props => props.width
 )}
`

在我的代码中,size 是一个根据传递的 prop returns 大小 css 序列化样式的函数:


const size = ({ width: "m"} = {}) => {
 switch(width) {
  case "s":
   return css`width: 100px`;
  break;
  case "m":
   return css`width: 150px`;
  break;
 }
} 
<Button width="s">Some text</Button>

但是,我在 size 函数中收到的 width 值不是传递的 prop 的解析值,即 s,而是一个字符串 props => props.width.

有没有什么方法可以将 props 从样式化的组件传递到函数中,类似于我想要实现的目标?

它不起作用,因为您将一个匿名函数传递给 width,在您不期望函数的地方。

我很确定这就是你想要做的:

const Button = styled.button`
 background: blue;
 ${props => size({ width: props.width })}
`

这样,您将在样式声明的范围内传递一个匿名函数,从 Emotion 获取道具并随意使用它。