From 4c42d3f40efafab13e5ba0ee800739420d8a2cc1 Mon Sep 17 00:00:00 2001 From: Cam Song Date: Thu, 11 Dec 2014 00:19:15 +0800 Subject: [PATCH] Add Chinese translation of jsx-in-depth --- docs/02.1-jsx-in-depth.zh-CN.md | 136 ++++++++++++++++++++++++++++++++ 1 file changed, 136 insertions(+) create mode 100644 docs/02.1-jsx-in-depth.zh-CN.md diff --git a/docs/02.1-jsx-in-depth.zh-CN.md b/docs/02.1-jsx-in-depth.zh-CN.md new file mode 100644 index 00000000..0c7b30c1 --- /dev/null +++ b/docs/02.1-jsx-in-depth.zh-CN.md @@ -0,0 +1,136 @@ +--- +id: jsx-in-depth-zh-CN +title: 深入 JSX +permalink: jsx-in-depth-zh-CN.html +prev: displaying-data-zh-CN.html +next: jsx-spread-zh-CN.html +--- + +[JSX](http://facebook.github.io/jsx/) 是一个看起来很像 XML 的 JavaScript 语法扩展。React 可以用来做简单的 JSX 句法转换。 + +## 为什么要用 JSX? + +你不需要为了 React 使用 JSX,可以直接使用原生 JS。但是,我们建议使用 JSX 是因为它能精确,也是常用的定义包含属性的树状结构的语法。 + +它对于非专职开发者比如设计师也比较熟悉。 + +XML 有固定的标签开启和闭合的优点。这能让复杂的树更易于阅读,优于方法调用和对象字面量的形式。 + +它没有修改 JavaScript 语义。 + +## HTML 标签 对比 React 模块 + +React 可以渲染 HTML 标签 (strings) 或 React 模块 (classes)。 + +要渲染 HTML 标签,只需在 JSX 里使用小写字母开头的标签名。 + +```javascript +var myDivElement =
; +React.render(myDivElement, document.body); +``` + +要渲染 React 模块,只需创建一个大写字母开头的本地变量。 + +```javascript +var MyComponent = React.createClass({/*...*/}); +var myElement = ; +React.render(myElement, document.body); +``` + +React 的 JSX 里约定分别使用首字母大、小写来区分本地模块的类和 HTML 标签。 + +> 提示: +> +> 由于 JSX 就是 JavaScript,一些标识符像 `class` 和 `for` 不建议作为 XML +> 属性名。作为替代,React DOM 使用 `className` 和 `htmlFor` 来做对应的属性。 + +## 转换(Transform) + +JSX 把类 XML 的语法转成原生 JavaScript,XML 元素、属性和子节点被转换成 `React.createElement` 的参数。 + +```javascript +var Nav; +// 输入 (JSX): +var app =