trying to port some code from jss to styled-components, jss code looks something like:
//... const styles = { myStyles: { color: 'green' } } const {classes} = jss.createStyleSheet(styles).attach() export default function(props) { return ( <div> <Widget1 className={classes.myStyles}/> <Widget2 className={classes.myStyles}/> </div> ) } my question is what would be the idiomatic way to accomplish this sharing of the same styles across multiple components?
Who uses styled-components? 329 companies reportedly use styled-components in their tech stacks, including Revolut, Graphy, and Shelf.
The biggest advantage of Emotion is its easily handled object styles for writing CSS. Take, for example, the case of styled-components, wherein the developer must create unique names for different components, all while avoiding identical naming styles.
Advantages of using Styled-components Below are some of benefits of using styled-components: Eliminates class name bugs: styled-components provide unique class names for your styles, thus eliminating the problems with class names duplications, misspellings, and overlaps.
You can either share actual CSS strings or share styled-components components:
import {css} from 'styled-components' const sharedStyle = css` color: green ` // then later const ComponentOne = styled.div` ${sharedStyle} /* some non-shared styles */ ` const ComponentTwo = styled.div` ${sharedStyle} /* some non-shared styles */ ` styled-components:const Shared = styled.div` color: green; ` // ... then later const ComponentOne = styled(Shared)` /* some non-shared styles */ ` const ComponentTwo = styled(Shared)` /* some non-shared styles */ ` Update: Based on questions in the comments, I created an example to show that passing props to styled-components's css function works the same way as passing props to the components themselves: https://codesandbox.io/s/2488xq91qj?fontsize=14. The official recommendation from styled-components is to always wrap strings you will pass to styled-components in the css tag function. In this example, the Test component receives it background and foreground colors through passed-in props embedded in the cssString variable created by invoking the css function.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With