Ваш JSX из
<div id={condition ? 'msg' : null}>Hello World!</div>
который не действующий Javascript сам по себе, будут собраны в следующих ReactJS называют:
React.createElement(
'div', // Element "tag" name.
{ id: condition ? 'msg' : null }, // Properties object.
'Hello World!' // Element contents.
);
который является действительным Javascript, готов быть интерпретируется/скомпилируется вашей средой выполнения Javascript. Как вы можете видеть, нет никакого способа замять if-else
в этот оператор, поскольку он не может быть скомпилирован в действительный Javascript.
Вы могли бы вместо того, чтобы использовать immediately-invoked function expression и передать значение, возвращаемое в:
<div id={(function() {
if (condition) {
return "msg";
} else {
return null;
}
})()}>Hello World!</div>
, который компилируется в следующий действительный Javascript:
React.createElement(
"div",
{
id: (function() {
if (condition) {
return "msg";
} else {
return null;
}
})()
},
"Hello World!"
);
потому что 'if' не rvalue? – dieend