Если я поменяю помеченную вами строку следующим образом, она будет работать:
return <span key={"classes.line" + i} className={`${classes.line} ${props.active ? `${classes["line" + i]}` : ''}`}></span>
Чтобы что-то показать, вашим строкам нужен класс .line
.Чтобы быть в «активном» состоянии, им нужно добавить свой соответствующий класс .lineX
, чтобы добавить преобразование, которое вы хотите увидеть.Поскольку вам нужны оба класса одновременно, вам нужно поместить оба в свойство className, что я и сделал здесь, соединив их в строку.
Я бы предложил изменить ваш CSS и добавитькласс active
в вашем меню.
Основная проблема заключается в том, что вам нужно добавить несколько классов к вашим элементам в какой-то момент.Вы можете сделать это с помощью интерполяции строк, как я показал выше (то же самое можно было бы добавить к классу active
к .menu
), или вы могли бы использовать такой модуль, как classnames , который отлично справляется с конкатенацией классов.Таким образом, вы могли бы написать
return <span key={"classes.line" + i} className={classnames(classes.line, props.active && classes["line" + i])}></span>
Я бы по-прежнему предлагал создать класс модификатора active
для вашего «корневого» элемента вашего компонента, чтобы модификаторы оставались на верхнем уровне, а ваш код был немного более понятным.,Вот ваш модифицированный пример .