JS: React
Теория: Обработка имён классов
Интерактивные элементы UI имеют более одного состояния отображения. Например, модальное окно может быть открыто или закрыто, а переключатель — включён или выключен. Обычно эти состояния меняют с помощью классов.
Работая напрямую с DOM, мы можем использовать classList, который содержит удобные методы для добавления и удаления классов. В React из коробки нет никаких удобств. Свойство className — это всего лишь строка, а строки неудобны для обработки:
Для решения этой задачи создатели React рекомендуют использовать пакет classnames. Принцип его работы прост. Вместо манипулирования строчкой напрямую, мы формируем правильный объект, который уже будет преобразован в строку:
Подставим конкретные значения:
Функция cn() принимает на вход любое количество аргументов. Если аргумент имеет строковой тип, то он считается обязательным классом. Если это объект, тогда работает логика, описанная выше:
Обязательные классы можно задавать и в самом объекте:
Иногда имя класса генерируется динамически, тогда можно использовать следующий код:
Функция умеет работать с массивами. Массив можно передавать в любом параметре:




