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

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

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

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

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

6 ответов

11 просмотров

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 — в необходимости передачи пустой функции

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

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

30500 за редактор? )
Владимир
47
а через ESC-код ?
Alexey Kulakov
29
Чёт не понял, я ж правильной функцией воспользовался чтобы вывести отладочную информацию? но что-то она не ловится
notme
18
Добрый день! Скажите пожалуйста, а какие программы вы бы рекомендовали написать для того, чтобы научиться управлять памятью? Можно написать динамический массив, можно связный ...
Филипп
7
У меня есть функция где происходит это: write_bit(buffer, 1); write_bit(buffer, 0); write_bit(buffer, 1); write_bit(buffer, 1); write_bit(buffer, 1); w...
~
14
Недавно Google Project Zero нашёл багу в SQLite с помощью LLM, о чём достаточно было шумно в определённых интернетах, которые сопровождались рассказами, что скоро всех "ибешни...
Alex Sherbakov
5
Ребят в СИ можно реализовать ООП?
Николай
33
Как передать управляющий символ в открытую через CreateProcess консоль? Собсна, есть процедура: procedure TRedirectThread.WriteData(Data: OEMString); var Written: Cardinal;...
Serjone
6
https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_h_common.erl#L174 https://github.com/erlang/otp/blob/OTP-27.1/lib/kernel/src/logger_olp.erl#L76 15 лет назад...
Maksim Lapshin
20
Всем привет! Имеется функция: function IsValidChar(ch: UTF8Char): Boolean; var i: Integer; ValidChars: AnsiString; begin ValidChars := 'abcdefghijklmnopqrstuvwxyzABCDE...
Евгений
44
Карта сайта