#javascript #reactjs #react-hooks
#javascript #reactjs #реагирующие перехваты
Вопрос:
В принципе, у меня есть состояние, которое является истинным или ложным. Имя состояния — DisplayFirstColorPicker . Если это true, я хочу, чтобы встроенным стилем был const ‘showColorPicker’, если его false, это должен быть const ‘hideColorPicker’.
Однако, когда я запускаю встроенный троичный оператор, я получаю сообщение об ошибке «Не удалось скомпилировать».
Есть идеи, что не так?
Встроенный код:
Состояние:
const [displayFirstColorPicker, setDisplayFirstColorPicker] = useState(false)
Встроенный код
<div class="firstColorPicker" style={{DisplayFirstColorPicker ? {showColorPicker} : {hideColorPicker}}}>
В consts
const showColorPicker = {
display: "block",
}
const hideColorPicker = {
display: "none",
}
Ответ №1:
Вы делаете здесь всякие странные вещи. У вас слишком много фигурных скобок снаружи, а также не следует использовать объектную короткую нотацию, подобную {showColorPicker}
той, которая компилировалась бы в { showColorPicker: { display: none} }
style={DisplayFirstColorPicker ? showColorPicker : hideColorPicker}
должно сработать.
Комментарии:
1. Извините, я все еще привыкаю к JSX. Продолжайте забывать, что как только я нахожусь в фигурных скобках, я могу свободно писать JS, и мне не нужно заключать каждую константу в фигурные скобки.
2. Да, там прямо javascript 🙂 так что, если нет стилей нравов, некоторые люди могут сделать
styles={{ display: DisplayFirstColorPicker ? 'block': 'none'}}