React Css Modules Каскад

111
21 июля 2021, 14:00

Всем привет. Пытаюсь понять как работаю css модули для вложеных компонентов. Как задать стили для Li компонента внтри Ul компонента. Вот код: https://codesandbox.io/s/nifty-smoke-59nlc Я хочу поменять цвет третьего Li на красный, как это сделать через Ul компонент?

Answer 1

Если делать именно так как вы хотите, то можно сделать следующим образом: Создать функцию в Ul.js которая в зависимости от номера будет присваивать класс с цветом, что то вроде того:

let testNum = num => {
  return num === 3 ? 'active' : 'normal';
}
const Ul = props => {
  const lis = props.items.map(item => <Li cl={testNum(item)} />);
  return <div className={style.container}>{lis}</div>;
};

После добавте в Li.module.css код для них

.normal {
  background: #eee;
}
.active {
  background: red;
}

И в самом Li.js присваивайте этот класс

const Li = props => {
  return <div className={`${style.li} ${style[props.cl]}`}>Li</div>;
};

Я точно не знаю что у вас за приложение, но если третий номер это просто стилизация никак не связанная с логикой, то можно сделать значитеьно проще - добавить изменения только в Li.module.css

.li:nth-child(3) {
  background: red;
}

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

READ ALSO
Заполнение одномерных массивов

Заполнение одномерных массивов

Нужно при помощи подпрограмм сформировать и вывести на экран массивы A[15] и B[14]И потом, при помощи функций найти их минумумы и максимумы

195
Возможно ли в С++ следующее условие?

Возможно ли в С++ следующее условие?

Нужно проверить, находится ли X в определённой области, например от 0 до 1Можно ли записать это так: if (0 < x < 1 )?

224
Вызов метода с исполнением всех действий

Вызов метода с исполнением всех действий

Подскажите пожалуйста как выполнить кодТак как точку входа нельзя поменять на public async void Main(string[] args)

228