javascript - 为什么在 react jsx 中使用时 if-else 条件不起作用

标签 javascript reactjs jsx

在编写 React 代码时在 jsx 中编写 if-else 是行不通的。

<div id={if (condition) { 'msg' }}>Hello World!</div>

但是使用三元运算符是可行的。

<div id={condition ? 'msg' : null}>Hello World!</div>

为什么会这样?

最佳答案

你的 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!"
);

关于javascript - 为什么在 react jsx 中使用时 if-else 条件不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/39098365/

相关文章:

javascript - Angularjs ui-router改变状态但在传递参数时不更新url

javascript - React componentDidMount 不更新状态

javascript - _React Js一页应用程序

javascript - 如何检测 React 应用程序中动态生成的元素外部的点击?

javascript - React Native jsx中三元内的.map()函数

javascript - HTML输入范围的值,getattribute vs value

javascript - JQuery 解包参数数组

javascript - 将左向屏幕外导航栏转换到屏幕右侧的问题

javascript - ReactJS:创建鼠标悬停事件时出现重复

javascript - 为什么它一直说用户未定义?