为什么分号会在反应JSX中抛出错误?

man*_*ain 6 jsx reactjs

下面是我在JSX中渲染方法的一部分 - 为什么})抛出错误后的分号?在普通的JavaScript中它完全没问题

<ul>
    {
        libraries.map(function (item) {
            return <li>{item.name.toLowerCase()}</li>;
        });
    }
</ul>
Run Code Online (Sandbox Code Playgroud)

azi*_*ium 7

这是因为JSX {}表达式仅限于单个表达式.

<div>{2 + 2; 3 + 3}</div>
Run Code Online (Sandbox Code Playgroud)

..会抛出一个错误.

但是你可以通过两个{}表达式解决这个问题

<div>{2 + 2}{3 + 3}</div>
Run Code Online (Sandbox Code Playgroud)

如果只有一个表达式,则不需要分号.

如果你想了解它,你可以在表达式中使用鲜为人知的逗号运算符来做一些本地工作,然后返回用逗号分隔的最后一个表达式:

let x
...
<div>{x = 20, x}</div>
Run Code Online (Sandbox Code Playgroud)

哪个会显示 <div>20</div>

你可能不需要任何地方的分号.

  • 其实不然。你的回答是正确的。表达式是给你一个值的东西。语句类似于赋值和控制流语句。通常它们是由exoression 组成的。每个表达式也可以是一个语句,但反过来不行。分号的全部目的是结束一个语句。块语句是特殊的,它们不需要结束。如果您不使用块,您实际上将分号放在 `if` 或 `while` 之后。现在,如果您了解其中的区别,就应该清楚为什么不能将分号放在需要表达式的地方了。 (2认同)