I'm having a trouble of rendering pseudo before content dynamically in styled-components.
Am I doing something wrong?
I have no problem when I render pseudo before content statically, but it doesn't work when I try it dynamically.
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'
}
`;
That is because content
value must be within quotes in css
Example:
const Block = styled.div`
&:before {
position: absolute;
top:0;
content: '${props => props.before}'
}
`
Note that I am leveraging ES6 new features wherein a single statement function there is no need to use curly braces {}
and return
.
Codepen: https://codepen.io/metju/pen/zEKeOm