在不工作之前使用样式化组件并将道具传递给伪元素

Posted

技术标签:

【中文标题】在不工作之前使用样式化组件并将道具传递给伪元素【英文标题】:Using Styled Components and passing props to psedo element before not working 【发布时间】:2022-01-21 18:16:42 【问题描述】:

我有以下样式的组件,我试图将一个道具传递给它并在伪元素选择器中使用它,在本例中为before。但是,它并没有按预期工作。

但是,如果我将相同的道具传递给背景 css 属性或任何其他属性,它完全可以正常工作

使用样式组件时是否允许以下​​操作?

const Label = styled.label`
  /* This did not work */
  &::before 
    content: $(props) => (props.field ? "Hi" : "");
  
  /*But this works perfectly fine*/
  background: $(props) => (props.field ? "palevioletred" : "white");
`;

const Input = styled.input`
  height: 32px;
`;

【问题讨论】:

【参考方案1】:

如果您检查 devtools,您会看到您的 CSS 规则正在进入 DOM,但它对于 content 属性是无效值。这是原始文本,没有引号:Hi。必须是"Hi"

尝试做(注意新模板字符串文字的反引号):

content: $(props) => (props.field ? `"Hi"` : "");

【讨论】:

完美,谢谢

以上是关于在不工作之前使用样式化组件并将道具传递给伪元素的主要内容,如果未能解决你的问题,请参考以下文章

如何使用 Typescript 在不丢失任何道具的情况下键入样式组件?

使用样式化组件时如何保留原始 html 元素的道具?

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

样式化的 MUI 无法在 typescript 中将组件道具传递给 Typography

如何使用 Material UI 和 TypeScript 将自定义道具传递给样式化组件?

将图像作为道具传递给 Next.js 中的样式化组件