深入理解 JSX

最后更新于:2022-04-01 20:47:35

[JSX](http://facebook.github.io/jsx/) 是一个看起来很像 XML 的 JavaScript 语法扩展。React 可以用来做简单的 JSX 句法转换。 [TOC] ## 为什么要使用 JSX? 你不需要为了 React 使用 JSX,可以直接使用纯粹的 JS。但我们更建议使用 JSX , 因为它能定义简洁且我们熟知的包含属性的树状结构语法。 对于非专职开发者(比如设计师)同样比较熟悉。 XML 有固定的标签开启和闭合。这能让复杂的树更易于阅读,优于方法调用和对象字面量的形式。 它没有修改 JavaScript 语义。 ## HTML标签 与 React组件 对比 React 可以渲染 HTML 标签 (strings) 或 React 组件 (classes)。 要渲染 HTML 标签,只需在 JSX 里使用小写字母开头的标签名。 ~~~ var myDivElement =
; React.render(myDivElement, document.body); ~~~ 要渲染 React 组件,只需创建一个大写字母开头的本地变量。 ~~~ var MyComponent = React.createClass({/*...*/}); var myElement = ; React.render(myElement, document.body); ~~~ React 的 JSX 里约定分别使用首字母大、小写来区分本地组件的类和 HTML 标签。 > 注意: > > 由于 JSX 就是 JavaScript,一些标识符像 `class` 和 `for` 不建议作为 XML 属性名。作为替代,React DOM 使用 `className` 和 `htmlFor` 来做对应的属性。 ## 转换 JSX 把类 XML 的语法转成纯粹 JavaScript,XML 元素、属性和子节点被转换成`React.createElement` 的参数。 ~~~ var Nav; // 输入 (JSX): var app =
';