How to add multiple classes to a ReactJS Component? How to add multiple classes to a ReactJS Component? reactjs reactjs

How to add multiple classes to a ReactJS Component?


I use ES6 template literals. For example:

const error = this.state.valid ? '' : 'error'const classes = `form-control round-lg ${error}`

And then just render it:

<input className={classes} />

One-liner version:

<input className={`form-control round-lg ${this.state.valid ? '' : 'error'}`} />


I use classnames when there is a fair amount of logic required for deciding the classes to (not) use. An overly simple example:

...    var liClasses = classNames({      'main-class': true,      'activeClass': self.state.focused === index    });    return (<li className={liClasses}>{data.name}</li>);...

That said, if you don't want to include a dependency then there are better answers below.


Just use JavaScript.

<li className={[activeClass, data.klass, "main-class"].join(' ')} />

If you want to add classes based keys and values in an object you can use the following:

function classNames(classes) {  return Object.entries(classes)    .filter(([key, value]) => value)    .map(([key, value]) => key)    .join(' ');}const classes = {  'maybeClass': true,  'otherClass': true,  'probablyNotClass': false,};const myClassNames = classNames(classes);// Output: "maybeClass otherClass"<li className={myClassNames} />

Or even simpler:

const isEnabled = true;const isChecked = false;<li className={[isEnabled && 'enabled', isChecked && 'checked']  .filter(e => !!e)  .join(' ')} />// Output:// <li className={'enabled'} />