babel-plugin-react-css-modules icon indicating copy to clipboard operation
babel-plugin-react-css-modules copied to clipboard

Passing multiple style props to a child component

Open gaurav5430 opened this issue 4 years ago • 1 comments
trafficstars

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 avatar Sep 05 '21 16:09 gaurav5430

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

gaurav5430 avatar Sep 05 '21 16:09 gaurav5430