@Alex_87

Не работает библиотека classnames?

Добрый день! При запуске возникает ошибка
[plugin:vite:react-swc] Bindings not found.
D:/Learn/React/DZ/react-basics-project-1/src/main.jsx

6631e93b5a64e754525248.png

Использую css модули
Мой код:
import styles from  './Input.module.css';
import classNames from 'classnames/bind';

const cx = classNames.bind(styles);

function InputComponent({name, className, placeholder}) {
  const fs = `${styles['form-style']}` + (className ? '' : ' ' + `${styles['plusPadding']}`);
  const ic = `${styles['input-icon']} ${styles['uil']} ${styles['uil-at']}` + (className ? ' ' + `${styles[className]}` : '');

  const className = cx(styles['form-style'],{
    [styles['plusPadding']] : className
  });

  return (
    
    
      <div className={styles['form-group']}>
        <input type="email" name={name} className={className} placeholder={placeholder} id="logemail" autoComplete="off" />
        <img className={ic} src="/search.svg" alt="" />
      </div>
  
    
  )
}

export default InputComponent


Как это решить? Весь вечер вчера искал, не нашёл...

P.S. У меня Windows 7
  • Вопрос задан
  • 104 просмотра
Решения вопроса 1
olibro
@olibro
Фронтенд разработчик
Сделайте проще, библиотека умеет работать с классами динамическим способом. То, что у вас, в документации предлагается как альтернатива.

1. Импортируйте

import classNames from 'classnames'

// и внутри компонента напишите объявление переменной:

const iconStylesClass = classNames(styles.selector)


2. Выделите классы, которые будут зависеть от каких-то условий: по пулевому типу они или будут показываться, или нет. Стандартный класс можно прописать в начале.

const iconStylesClass = cn(styles.selector, {
    [styles.selector2]: hasItems, 
    [styles.selector3]: foo && bar,
}


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

const someStyles = cn(props.someStyle, {
    [styles.selector4]: true,
}


Такой подход более декларативный и избавляет от написания турнирных операторов внутри строк.

3. После того как определитесь со стилями, вашу переменную уже можно положить в верстку:

<div className={iconStylesClass}/>

Подробнее хорошо написано в доке здесь
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы