Follow

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use
Contact

How can I rewrite this conditional css using classnames?

In react component, I’m using css module and I got this conditional css that is working fine, but I would like to refactor it using classnames library.

className = { `${active ? styles.activeLabel : styles.notActiveLabel} 
${weight === 'bold' ? styles.bold : ''}`}

So I tried this but I get error msg saying active will always return false.

className={classnames({styles.activeLabel: !!active}, {styles.bold: weight === 'bold'})}

I also tried styles.activeLabel: active === true, but I get another error message.
Basically I want when active prop is true then apply activeLabel class, if active is false then apply notActiveLabel class. How can I accomplish this using classnames?

MEDevel.com: Open-source for Healthcare and Education

Collecting and validating open-source software for healthcare, education, enterprise, development, medical imaging, medical records, and digital pathology.

Visit Medevel

>Solution :

The Keys on JS Object must to be a string or a number, you can’t set a key like:

// this does not work
const object = { key: 'value' }
const object2 = { object.key: true }

So, when you need to get a key with dynamic name you have to do with square brackets

// this works
const object = { key: 'value' }
const object2 = { [object.key]: true }

Try to do something like:

className={classnames({ [styles.activeLabel]: !!active}, {[styles.bold]: weight === 'bold'})}

References:
Multiple classNames with CSS Modules and React
How do I create a dynamic key to be added to a JavaScript object variable

Add a comment

Leave a Reply

Keep Up to Date with the Most Important News

By pressing the Subscribe button, you confirm that you have read and are agreeing to our Privacy Policy and Terms of Use

Discover more from Dev solutions

Subscribe now to keep reading and get access to the full archive.

Continue reading