gajus / babel-plugin-react-css-modules

Transforms styleName to className using compile time CSS module resolution.
Other
2.05k stars 162 forks source link

Passing multiple style props to a child component #306

Open gaurav5430 opened 2 years ago

gaurav5430 commented 2 years ago

I have a child component, which accepts multiple props for styles, one for the container, and other for one of the internal elements. Generally, I would just name them something like className and elementClassName, and get different css classes from the parent in each of the props. With react-css-modules though, since the default rule only allows converting styleName to className, I can not pass different local classes in multiple props, as i can only have 1 styleName prop.

One of the way around this seems to be to use named imports instead of anonymous imports and then pass styles.containerClass in className and styles.elementClass in elementClassName prop. This does not require using the styleName prop at all.

import styles from './some.css';

...
...
<Component className={styles.containerClass} elementClassName={styles.elementClass} />

...
...

This seems alright, and the other existing styleName in the file do not break, still work alright and do not need to be changed to styles.soemthing, but it is slightly confusing that the named import is being only used at one place, and at the rest of the places the anonymous string value in styleName still works fine.

Is there another preferred / prescribed approach to handle the above scenario?

gaurav5430 commented 2 years ago

Oh, going through the readme, stumbled across the Custom attribute mapping. Would the Custom attribute mapping / attributeNames map help with this?