Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Benefits of using CSS modules with React/Vue

I would like to understand the benefits of using CSS Modules with React/Vue.

Currently in my company developers use the following in development:

return (
    <div className={styles.User}>
        <div className={styles.name}>...</div>
    </div>
)

While using a CSS module file, something like:

.User {
    background-color: var(--bg-color, red);

    .name { color: white; }
}

What should an HTML output such as:

<div class="_User_xyz_1">
    <div class="_name_abc_1">...</div>
</div>

Which is a bit confusing for me, as this "encodes" all the class names and creates a great deal of difficulty if I need to do a parent-level modification. Eg.:

<div class="SomeParent">
    <User name="David" />
</div>

So:

.SomeParent {
    > .User {
        --bg-color: blue; // Will not words, because .User is not .User, in fact.
    }
}

In personal projects, I prefer to name the primary element of the template by defining it as a "major class", the main. Eg.:

return (
    <div className="User">
        <div className="name">...</div>
    </div>
)

And a regular CSS/SCSS:

.User {
    background-color: var(--bg-color, red);

    > .name { color: white; }
}

So a parent element's code can affect a child element under expected and controlled conditions.

My question here is: what are the benefits of using the model that my company uses that I am not able to see? Am I missing something using a more "moderate/primitive" model?

Another possibility is: can I modify the style of child elements through the parent element, even with the name of the classes being encoded this way?

like image 462
David Rodrigues Avatar asked Dec 21 '25 19:12

David Rodrigues


2 Answers

CSS modules generate custom classnames for each style and therefore prevent the problem you are facing in your solution. Because each css module style has its own classname you cannot accidentially change a child components style.

like image 126
Code Spirit Avatar answered Dec 23 '25 10:12

Code Spirit


hash className, preventing other developers from quickly decompiling your style scheme.

like image 24
Terry Avatar answered Dec 23 '25 10:12

Terry



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!