React className изменяется, но стиль CSS не изменяется

У меня есть четыре имени класса, давайте назовем их красный-0, красный-1, синий-0, синий-1

CSS для red-0 и red-1 одинаков, CSS для blue-0 и blue-1 одинаков.

Мой компонент React меняет имена классов так, как я хочу. Моя проблема в том, что похоже, что компонент React игнорирует стили CSS, когда я применяю имя класса с тем же CSS, что и было прямо перед изменением состояния. Это реальный случай? Потому что мой CSS отлично меняется, когда, например, красный-0 в синий-0, но не красный-0 в красный-1.

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

Мне приятель помог:

Трикс состоял в том, чтобы добавить обещание и сначала установить состояние на пустое имя класса, а затем добавить имя класса, которое я хотел, внутри обещания, например:

this.setState ({className: ''}, () => this.setState ({className: 'red-0'}));

Причина наличия четырех имен классов вместо двух заключалась в том, что я надеялся, что изменение имени класса вызовет новую анимацию, но этого не произошло, хотя это вызвало новые регулярные изменения CSS. В итоге я использовал только два имени класса: красный и синий

соответствующий фрагмент кода поможет ли он другим в решении вашей проблемы

Shubham Khatri 15.03.2018 16:45

в чем именно проблема? Если и red-0, и red-1 одинаковы, разве это не правильно?

Davin Tryon 15.03.2018 16:46

Из моего собственного любопытства, не могли бы вы сделать this.forceUpdate() в конце любого обработчика событий, меняющего имена классов?

Joshua Underwood 15.03.2018 16:46

@DavinTryon Скорее всего, он выполняет некоторую условную работу на основе имени класса.

Joshua Underwood 15.03.2018 16:47

@ReidunMarie, пожалуйста, попробуйте добавить this.forceUpdate() в конец любого обработчика событий, изменяющего имя класса, и сообщите мне, отображаются ли новые имена классов так, как вы ожидаете. Затем ответьте, чтобы мы знали, видите ли вы результаты.

Joshua Underwood 15.03.2018 17:15

Пожалуйста, добавьте свой код

dnp1204 15.03.2018 20:37
Приемы CSS-макетирования - floats и Flexbox
Приемы CSS-макетирования - floats и Flexbox
Здравствуйте, друзья-студенты! Готовы совершенствовать свои навыки веб-дизайна? Сегодня в нашем путешествии мы рассмотрим приемы CSS-верстки - в...
Введение в CSS
Введение в CSS
CSS является неотъемлемой частью трех основных составляющих front-end веб-разработки.
Как выровнять Div по центру?
Как выровнять Div по центру?
Чтобы выровнять элемент <div>по горизонтали и вертикали с помощью CSS, можно использовать комбинацию свойств и значений CSS. Вот несколько методов,...
Навигация по приложениям React: Исчерпывающее руководство по React Router
Навигация по приложениям React: Исчерпывающее руководство по React Router
React Router стала незаменимой библиотекой для создания одностраничных приложений с навигацией в React. В этой статье блога мы подробно рассмотрим...
Система управления парковками с использованием HTML, CSS и JavaScript
Система управления парковками с использованием HTML, CSS и JavaScript
Веб-сайт по управлению парковками был создан с использованием HTML, CSS и JavaScript. Это простой сайт, ничего вычурного. Основная цель -...
CSS: FlexBox
CSS: FlexBox
Ранее разработчики использовали макеты с помощью Position и Float. После появления flexbox сценарий полностью изменился.
0
6
91
0

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