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