cry*_*ker 5 javascript jsx reactjs react-jsx
在编写反应代码时在 jsx 中编写 if-else 不起作用。
<div id={if (condition) { 'msg' }}>Hello World!</div>
Run Code Online (Sandbox Code Playgroud)
但是使用三元运算符有效。
<div id={condition ? 'msg' : null}>Hello World!</div>
Run Code Online (Sandbox Code Playgroud)
为什么会这样?
您的 JSX
<div id={condition ? 'msg' : null}>Hello World!</div>
Run Code Online (Sandbox Code Playgroud)
它本身不是有效的 Javascript,将被编译为以下 ReactJS 调用:
React.createElement(
'div', // Element "tag" name.
{ id: condition ? 'msg' : null }, // Properties object.
'Hello World!' // Element contents.
);
Run Code Online (Sandbox Code Playgroud)
这是有效的 Javascript,可以由 Javascript 运行时环境解释/编译。正如您所看到的,无法将 an 插入if-else到该语句中,因为它无法编译为有效的 Javascript。
您可以改为使用立即调用的函数表达式并传递从内部返回的值:
<div id={(function () {
if (condition) {
return "msg";
} else {
return null;
}
})()}>Hello World!</div>
Run Code Online (Sandbox Code Playgroud)
它将编译成以下有效的 Javascript:
React.createElement(
"div",
{
id: (function () {
if (condition) {
return "msg";
} else {
return null;
}
})()
},
"Hello World!"
);
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
3799 次 |
| 最近记录: |