使用 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 获取道具并随意使用它。
我使用 @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 获取道具并随意使用它。