如何在样式组件中动态地在内容之前渲染伪

IT技术 reactjs styled-components
2021-05-15 06:06:08

我在样式化组件中动态呈现伪内容之前遇到了麻烦。

难道我做错了什么?

当我在静态内容之前渲染伪内容时我没有问题,但是当我动态尝试时它不起作用。

react组件

const Test = (props) => {

    return (
        <Text before={12345}>
            {props.children}
        </Text>
    );

};

样式组件(不工作)

const Text = styled.span`

    &:before {
        content: ${props => {
            console.log(props.before); // I see '12345' in log.
            return props.before;
            }
    }


`;

样式组件(这很好用)

const Text = styled.span`

    &:before {
        content: '12345'
    }


`;
3个回答

那是因为content值必须在 css 中的引号内

例子:

const Block = styled.div`
    &:before {
        display: absolute;
        top:0;
        content: '${props => props.before}'
    }
`

请注意,我正在利用ES6 的新功能,其中单个语句函数无需使用大括号{}return.

代码笔:https ://codepen.io/metju/pen/zEKeOm

我所做的是为此使用 css helper 函数:

const Text = styled.span`
  &:before {
     ${props => !!props.before ?
      css`content: props.before;` : css`content: ' 🦄'';`
     };
  }
`

styled-components 和 sass 一样,没什么不同

const Text = styled.span`
    &:before {
       content: ${props => !!props.before ? props.before : " 🦄"};
    }

`;

我是一个 // 渲染:“我是一个 🦄”

引用自 与样式组件一起使用的 Before 和 After 伪类