Двойной амперсанд (&&
) означает оператор логического И .
В предоставленном вами коде используется оценка короткого замыкания, чтобы определить, отображать ли button
или не. Для упрощения кода, если auth.loading
ложно, а user === auth.user._id
истинно, тогда будет отображаться button
.
Подробнее об оценке короткого замыкания с помощью логического оператора И
expression 1 && expression 2
В приведенном выше случае, если expression 1
является ложным, expression 2
не будет оцениваться, потому что, оценивается ли expression 2
как истинное или ложное, результат объединенного выражения будет false
, потому что оба выражения должны быть истинными, чтобы объединенное выражение оценивалось как истинное.
Пример,
const funcOne = () => { console.log('called funcOne'); return false; }
const funcTwo = () => { console.log('called funcTwo'); return true; }
console.log( funcOne() && funcTwo() );
// in the case above funcTwo will not be called because
// the firstpart of the expression funcOne() && funcTwo()
// evaluates to false (the return value of funcOne is false)
Использование оценки короткого замыкания с React
Имейте в виду, JSX
- это просто синтаксис c сахар для вызов функции, <button>Hello</button>
будет преобразован в вызов функции React.createElement
за сценой. Вот почему визуализация JSX
с оценкой короткого замыкания ничем не отличается от использования оценки короткого замыкания с обычными вызовами функций.
expr1 && expr2 && <button>Hello</button>
// will be converted to
expr1 && expr2 && React.createElement("button", null, "Hello");
// so if expr1 or expr2 evaluate to false React.createElement will not be -
// called, both expr1 and expr2 have to evaluate to true for the-
// React.createElement function to be called