咋理解 \"JSX 表达式总是会当作 ReactElement 执行\" ?

意思就是,不管JSX怎么写,最后都是转化为React.createElement这样的表达式,产生的是一个对象。
比如JSX这么写
\u0026lt;div\u0026gt;Hello world \u0026lt;span\u0026gt;React User\u0026lt;/span\u0026gt;\u0026lt;/div\u0026gt;最后实际产生的JavaScript是这样。
React.createElement( "div", null, "Hello world ", React.createElement( "span", null, "React User" ));你看,是嵌套的React.createElement调用,所以啊,在JSX中不能写for或者while这样的语句,因为for/while没法插入到单纯的表达式中,只能用map产生数组。

■网友
翻译有点晕,不如看原文Note:
The JSX expression always evaluates to a ReactElement. The actual implementation details may vary. An optimized mode could inline the ReactElement as an object literal to bypass the validation code in React.createElement.
【咋理解 \"JSX 表达式总是会当作 ReactElement 执行\" ?】 这里描述的就很简单一个事实,jsx 会被转换成 React.createElement() 调用,而这个函数调用返回的是 js plain object,那么可以用 object literal 来代替函数调用来达到性能优化的目的。
具体见我的另一个答案。
https://www.zhihu.com/question/41900814/answer/92775518

■网友
JSX在react中,就是React.createElement这个API的语法糖。开发阶段,js中的JSX本质上是无法被识别执行的,是为了优化在js中编写类似html的模板代码而创造的一种DSL。最终被执行的react代码实际上是经过webpack之类的打包工具经过一系列工具转义后的js,css和html。其中就有负责转义JSX的工具。而在React中,JSX部分的代码就会被转义为一些列的React.createElement...,而这个API最终返回的就是ReactElement。所以,对于React而言,JSX表达式总是会当做ReactElement执行,JSX就是React.createElement的语法糖


    推荐阅读