169 похожих чатов

Ребят, react ругается на записать !multipleLoginAttempts && openWindowAuth По этому сделал

тернарным оператором. У меня 2 вопроса:

Почему он ругается на эту запись !multipleLoginAttempts && openWindowAuth

И что правильнее писать в условии false: пустую строку, или null?

6 ответов

8 просмотров

1. В скобки внеси условие))

в подобных случаях в js/ts удобнее пользоваться null (хотя в тут концептуально уместнее ситуация, когда typeof onClick === 'undefined', что не достигается никаким присваиванием) можно попробовать через spread оператор, который позволит получить чистый лаконичный код ...(multipleLoginAttempts ? { onClick: openWindowAuth } : {}) а ругалось, вероятно, на пустые кавычки (вместо которых в onClick должна быть передана функция обработчика)

Вкусно

на здоровье! )

Саша-Градинар Автор вопроса

Спасибо, это помогло. А чем вообще эти 3 записи отличаются?

в первом случае атрибут onClick задаётся только в случае, когда определён multipleLoginAttempts (это вторая часть тернарника) [[кстати, тут требуется уточнение относительно использования multipleLoginAttempts или !multipleLoginAttempts]] если же multipleLoginAttempts не определён, то и onClick не определён (это третья часть тернарника) в остальных Вами приведённых примерах onClick оказывается всегда определён (вне зависимости от multipleLoginAttempts и желаемого поведения) но значения, туда переданные, различаются: во втором случае, в onClick приходит тело функции, в котором openWindowAuth никогда не сработает, как функция — её вызова не происходит. тут логичнее была бы такая запись onClick={() => !multipleLoginAttempts ? openWindowAuth() : (() => {})()} или ещё чуть лаконичнее onClick={() => (!multipleLoginAttempts ? openWindowAuth : () => {})()} в третьем случае скобки не нужны но тут намного важнее обратить внимание на то, что если первая часть условного выражения будет false, то и в атрибут onClick будет записан false, что не является функцией т.к. при попытке его вызвать [false()] ничего полезного не произойдёт этот кусок тоже можно исправить, привести к такому решению: onClick={!multipleLoginAttempts ? openWindowAuth : () => {}} минус обоих решений 2 и 3 — в необходимости передачи пустой функции

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

Обсуждают сегодня

Какой-то там пердун в 90-х решил, что есть какая-то разная типизация. Кого вообще это волнует?
КТ315
49
void terminal_scroll() { memmove(terminal_buffer, terminal_buffer + VGA_WIDTH, buffer_size - VGA_WIDTH); memset(terminal_buffer + buffer_size - VGA_WIDTH, 0, VGA_WIDTH); ...
Егор
47
Всем привет! Подскажите, пожалуйста, в чем ошибка? Настраиваю подключение к MySQL. Либы лежат рядом с exe. Все как по "учебнику"
Евгений
16
А можете как-то проверить меня по знаниям по ассемблеру?
A A
132
Здравствуйте! У меня появилась возможность купить книгу "Изучай Haskell во имя добра!". Но я где-то слышал, что эта книга устарела. Насколько это правда??
E
22
Здравствуйте! Я вот на stepic решаю задачи на хаскеле https://stepik.org/lesson/8443/step/8?unit=1578 мой код import Data.List (isInfixOf) removing :: String -> [String] ->...
E
10
Камрады, кто тесно работал с vtv, хотел уточнить. Ширина column задаётся жёстко на этапе создания дерева или можно в рантайме ее менять программно (не мышкой)?
Ed Doc
10
да ладно ... что там неочевидного ? глянуть в исх-ки датасета и/или кверика чтобы понять в каком месте и как выполняется обращения к св-вам blablaSQL - минутное дело, даже е...
Сергей
7
Здесь для arm кто-нибудь кодит ?
Nothing
52
Всем привет, у меня есть сервер принимающий входящие HTTP подключения, как проверить, что подключение было через прокси или нет, есть какие то поля в заголовках по которым мо...
DS
8
Карта сайта