Как мне переключать классы DOM в React (Material-UI)?

#javascript #css #reactjs #material-ui

#javascript #css #reactjs #material-ui

Вопрос:

Я использую Material UI с React, у меня есть div:

 <div className={classes.div}></div>
  

Я хочу добавить к нему условный класс:

 <div className={classes.div   divActive ? `${classes.div}__active` : ''}></div>
  

Второй пример не работает — он всегда возвращается <div class="makeStyles-div-2__active"></div> туда, где должен быть:

divActive false: <div class="makeStyles-div-2"></div>

divActive true: <div class="makeStyles-div-2 makeStyles-div-2__active"></div>

Чего мне не хватает? Я попытался classes.div вставить дополнительный литерал шаблона, например:

<div className={`${classes.div}` divActive ? `${classes.div}__active` : ''}></div>

Но те же результаты. Когда я удаляю первый класс ( classes.div ) divActive , кажется, что переключатель if работает и переключается между активным / неактивным, поэтому я предполагаю, что моя проблема заключается в первой переменной, но что в этом плохого?

Ответ №1:

Заключите троичное условие в круглые скобки и добавьте немного пробелов, когда divActive возвращает true

 <div className={classes.div   (divActive ? ` ${classes.div}__active` : '')}></div>
  

Комментарии:

1. О, snap, я думал, что это проблема с интерфейсом Material, и я забыл о скобках, спасибо: facepalm:. Примет ваш ответ через 3 минуты, хорошего дня!

2. да, добавление имеет приоритет 14 , в то время как троичный имеет 4 . группировка (скобки) имеет приоритет 21