如何使用 Emotion CSS 函数传递道具

Posted

技术标签:

【中文标题】如何使用 Emotion CSS 函数传递道具【英文标题】:How to pass a Prop using Emotion CSS function 【发布时间】:2020-05-14 10:48:59 【问题描述】:

我知道我可以使用 Emotion's styled() 传递 props

const Container = styled("div")< position: string >`
  display: flex;      
  flex-direction: $( position ) => (position === "top" ? "column" : "row");
  margin: $( position ) => (position === "top" ? "40px" : "0");
`;

我可以/如何使用 Emotion 的css() 做同样的事情吗?

 const Container = css /* ???? doesn't work < position: string >*/`
      display: flex;      
      flex-direction: $( position ) => (position === "top" ? "column" : "row");
      margin: $( position ) => (position === "top" ? "40px" : "0");
    `;

【问题讨论】:

您应该能够以类似的方式传递道具 const Container = props => (your styles here ); 【参考方案1】:

为了更好地展示我的评论中的建议,这是一个使用您的代码的示例

 const Container = (position: string) => (
   <div css=
     display: flex,     
     flexDirection: $( position ) => (position === "top" ? "column" : "row"),
     margin: $( position ) => (position === "top" ? "40px" : "0")
   />
 );

Emotion 在他们的网站上有一些examples of this

【讨论】:

谢谢 - 这是一个不错的选择。

以上是关于如何使用 Emotion CSS 函数传递道具的主要内容,如果未能解决你的问题,请参考以下文章

MUI v5 使用 styled() 将道具传递给 CSS 主题

在 Emotion 11/Next js 10 应用程序中启用 css 道具的正确方法是啥

Styled-components vs Emotion - 如何在 Styled-components 上重新应用 css`style` 函数

在反应中使用css模块如何将className作为道具传递给组件

MUI v5:我是不是需要安装 @emotion/react 或 @emotion/styled 才能使用 sx 道具?

使用 Emotion css 将图像添加到按钮