ReactJS: условно добавить className с помощью оператора точки

С ReactJS я использую SCSS. Я использую import classes from './component1.module.scss';, а затем обращаюсь к именам классов, используя className = {classes.password}. Однако как я могу динамически добавлять дополнительные классы к элементу на основе условий в этом формате?

Используйте тернарии в фигурных скобках, это просто JS? верно

Sudhanshu Kumar 24.12.2020 14:39

@Temp O'rary Проверьте ответ, который я дал. Эта техника часто используется в React. :) Голосуйте и принимайте, если этот ответ полезен;)

Imran Rafiq Rather 24.12.2020 14:44
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
Поведение ключевого слова "this" в стрелочной функции в сравнении с нормальной функцией
В JavaScript одним из самых запутанных понятий является поведение ключевого слова "this" в стрелочной и обычной функциях.
Концепция локализации и ее применение в приложениях React ⚡️
Концепция локализации и ее применение в приложениях React ⚡️
Локализация - это процесс адаптации приложения к различным языкам и культурным требованиям. Это позволяет пользователям получить опыт, соответствующий...
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
Улучшение производительности загрузки с помощью Google Tag Manager и атрибута Defer
В настоящее время производительность загрузки веб-сайта имеет решающее значение не только для удобства пользователей, но и для ранжирования в...
Безумие обратных вызовов в javascript [JS]
Безумие обратных вызовов в javascript [JS]
Здравствуйте! Юный падаван 🚀. Присоединяйся ко мне, чтобы разобраться в одной из самых запутанных концепций, когда вы начинаете изучать мир...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
JavaScript Вопросы с множественным выбором и ответы
JavaScript Вопросы с множественным выбором и ответы
Если вы ищете платформу, которая предоставляет вам бесплатный тест JavaScript MCQ (Multiple Choice Questions With Answers) для оценки ваших знаний,...
1
2
135
3
Перейти к ответу Данный вопрос помечен как решенный

Ответы 3

Вот как мы достигаем этого с помощью JSX.

className = {`${isStateValue ? classes.password: classes.password2 classes.password3}`}

Это тернарный оператор. вы даже можете использовать вложенный троичный код, если у вас есть больше условий.

Просто вы можете использовать обратные кавычки и тернарные операторы внутри ${} и выполнять внутри него условия.

className = {`${props.password ? classes.password : '404class'}`}
className = {`${props.password && classes.password}`}
Ответ принят как подходящий

Хотя для этого подойдут тернарные операторы, если у вас есть более чем несколько экземпляров, где вам нужно использовать этот тип логики, вы можете создать функцию, которая будет принимать список имен классов и возвращать истинные значения.

const cx = (...args) => args.filter(Boolean).join(' ')

<Component className = {cx(classes.password, special && classes.specialPassword)} />

Если вы не хотите писать свою собственную функцию cx, вы также можете использовать одну из следующих библиотек, которые предоставляют те же функции и даже больше:

  1. https://www.npmjs.com/package/classnames
  2. https://www.npmjs.com/package/clsx

Другие вопросы по теме