Browse Source

File Cleanup.

main
Baraa Hamodi 9 years ago
parent
commit
bd6d713917
  1. 2
      docs/02.1-jsx-in-depth.ja-JP.md
  2. 4
      docs/02.1-jsx-in-depth.zh-CN.md
  3. 4
      docs/03-interactivity-and-dynamic-uis.ja-JP.md
  4. 4
      docs/04-multiple-components.zh-CN.md
  5. 2
      docs/05-reusable-components.ja-JP.md
  6. 2
      docs/05-reusable-components.md
  7. 2
      docs/06-transferring-props.ko-KR.md
  8. 4
      docs/06-transferring-props.zh-CN.md
  9. 36
      docs/07-forms.zh-CN.md
  10. 2
      docs/08-working-with-the-browser.ja-JP.md
  11. 2
      docs/08-working-with-the-browser.ko-KR.md
  12. 12
      docs/08-working-with-the-browser.zh-CN.md
  13. 8
      docs/08.1-more-about-ref-zh-CN.md
  14. 2
      docs/08.1-more-about-refs.ja-JP.md
  15. 6
      docs/08.1-more-about-refs.zh-CN.md
  16. 2
      docs/09-tooling-integration.ja-JP.md
  17. 10
      docs/10-addons.zh-CN.md
  18. 2
      docs/10.1-animation.ja-JP.md
  19. 2
      docs/10.1-animation.zh-CN.md
  20. 4
      docs/10.2-form-input-binding-sugar.ja-JP.md
  21. 4
      docs/10.4-test-utils.it-IT.md
  22. 6
      docs/10.4-test-utils.md
  23. 2
      docs/10.5-clone-with-props.ja-JP.md
  24. 2
      docs/10.7-update.ja-JP.md
  25. 2
      docs/10.8-pure-render-mixin.ja-JP.md
  26. 2
      docs/11-advanced-performance.ja-JP.md
  27. 2
      docs/ref-01-top-level-api.ja-JP.md
  28. 2
      docs/ref-02-component-api.md
  29. 2
      docs/ref-02-component-api.zh-CN.md
  30. 4
      docs/ref-05-events.it-IT.md
  31. 4
      docs/ref-05-events.md
  32. 2
      docs/ref-05-events.zh-CN.md
  33. 2
      docs/ref-08-reconciliation.md
  34. 16
      docs/thinking-in-react.zh-CN.md
  35. 8
      docs/tutorial.zh-CN.md

2
docs/02.1-jsx-in-depth.ja-JP.md

@ -216,4 +216,4 @@ var content = (
``` ```
> 注意: > 注意:
> JSXはHTMLに似ていますが、全く同じではありません。いくつかのキーの違いについては[JSXの理解](/react/docs/jsx-gotchas.html) をご覧ください。 > JSXはHTMLに似ていますが、全く同じではありません。いくつかのキーの違いについては[JSXの理解](/react/docs/jsx-gotchas.html) をご覧ください。

4
docs/02.1-jsx-in-depth.zh-CN.md

@ -99,7 +99,7 @@ var Nav = React.createClass({displayName: "Nav", });
如果你正在构建一个有很多子组件的组件,比如表单,你也许会最终得到许多的变量声明。 如果你正在构建一个有很多子组件的组件,比如表单,你也许会最终得到许多的变量声明。
```javascript ```javascript
// 尴尬的变量声明块 // 尴尬的变量声明块
var Form = MyFormComponent; var Form = MyFormComponent;
var FormRow = Form.Row; var FormRow = Form.Row;
var FormLabel = Form.Label; var FormLabel = Form.Label;
@ -221,5 +221,5 @@ var content = (
``` ```
> 注意: > 注意:
> >
> JSX 类似于 HTML,但不完全一样。参考 [JSX 陷阱](/react/docs/jsx-gotchas-zh-CN.html) 了解主要不同。 > JSX 类似于 HTML,但不完全一样。参考 [JSX 陷阱](/react/docs/jsx-gotchas-zh-CN.html) 了解主要不同。

4
docs/03-interactivity-and-dynamic-uis.ja-JP.md

@ -78,7 +78,7 @@ Reactがデータの変更を通知する共通な方法は `setState(data, call
`this.state` UIのstateを表す必要がある最小限の量のデータだけを保持するべきです。このような点で以下のようなものは保持するべきではありません。 `this.state` UIのstateを表す必要がある最小限の量のデータだけを保持するべきです。このような点で以下のようなものは保持するべきではありません。
* **計算されたデータ:** * **計算されたデータ:**
stateに基づく事前に計算された値について心配は要りません。 `render()` を用いて、全ての計算を行って、UIの一貫性を保証するよりも簡単です。例えば、stateにリスト化されたアイテムの配列を持っていて、文字列としてその数をレンダリングしたいとして、それらをstateに保持するよりも `render()` メソッドに `this.state.listItems.length + ' list items'` を単純にレンダリングすれば良いのです。 stateに基づく事前に計算された値について心配は要りません。 `render()` を用いて、全ての計算を行って、UIの一貫性を保証するよりも簡単です。例えば、stateにリスト化されたアイテムの配列を持っていて、文字列としてその数をレンダリングしたいとして、それらをstateに保持するよりも `render()` メソッドに `this.state.listItems.length + ' list items'` を単純にレンダリングすれば良いのです。
* **Reactのコンポーネント:** 隠れたpropsとstateに基づいて `render()` でそれらをビルドしてください。 * **Reactのコンポーネント:** 隠れたpropsとstateに基づいて `render()` でそれらをビルドしてください。
* **propsからコピーしたデータ:** 可能であれば、propsを真のソースとして使ってみてください。propsは時とともに変化し得るので、正しくstateにpropsを保持する使い方は、以前の値を知っていることになり得ます。 * **propsからコピーしたデータ:** 可能であれば、propsを真のソースとして使ってみてください。propsは時とともに変化し得るので、正しくstateにpropsを保持する使い方は、以前の値を知っていることになり得ます。

4
docs/04-multiple-components.zh-CN.md

@ -168,7 +168,7 @@ var MyComponent = React.createClass({
}); });
``` ```
也可以传递ReactFragment 对象 来做有 key 的子级。详见[Keyed Fragments](create-fragment.html) 也可以传递ReactFragment 对象 来做有 key 的子级。详见[Keyed Fragments](create-fragment.html)
## 数据流 ## 数据流
@ -182,5 +182,5 @@ React 里,数据通过上面介绍过的 `props` 从拥有者流向归属者
但是,有时候需要做细粒度的性能控制。这种情况下,可以重写 `shouldComponentUpdate()` 方法返回 false 来让 React 跳过对子树的处理。参考 [React reference docs](/react/docs/component-specs.html) 了解更多。 但是,有时候需要做细粒度的性能控制。这种情况下,可以重写 `shouldComponentUpdate()` 方法返回 false 来让 React 跳过对子树的处理。参考 [React reference docs](/react/docs/component-specs.html) 了解更多。
> 注意: > 注意:
> >
> 如果在数据变化时让 `shouldComponentUpdate()` 返回 false,React 就不能保证用户界面同步。当使用它的时候一定确保你清楚到底做了什么,并且只在遇到明显性能问题的时候才使用它。不要低估 JavaScript 的速度,DOM 操作通常才是慢的原因。 > 如果在数据变化时让 `shouldComponentUpdate()` 返回 false,React 就不能保证用户界面同步。当使用它的时候一定确保你清楚到底做了什么,并且只在遇到明显性能问题的时候才使用它。不要低估 JavaScript 的速度,DOM 操作通常才是慢的原因。

2
docs/05-reusable-components.ja-JP.md

@ -227,4 +227,4 @@ Counter.defaultProps = { initialCount: 0 };
### ミックスインはありません ### ミックスインはありません
不幸なことに、ES6はミックスインのサポートを行いません。それゆえ、ReactをES6のクラスと一緒に使う際にはミックスインのサポートはありません。代わりに、ミックスインに頼ることなくそれらのユースケースをサポートするのが簡単になるよう努力しています。 不幸なことに、ES6はミックスインのサポートを行いません。それゆえ、ReactをES6のクラスと一緒に使う際にはミックスインのサポートはありません。代わりに、ミックスインに頼ることなくそれらのユースケースをサポートするのが簡単になるよう努力しています。

2
docs/05-reusable-components.md

@ -257,7 +257,7 @@ ReactDOM.render(<HelloMessage name="Sebastian" />, mountNode);
This simplified component API is intended for components that are pure functions of their props. These components must not retain internal state, do not have backing instances, and do not have the component lifecycle methods. They are pure functional transforms of their input, with zero boilerplate. This simplified component API is intended for components that are pure functions of their props. These components must not retain internal state, do not have backing instances, and do not have the component lifecycle methods. They are pure functional transforms of their input, with zero boilerplate.
> NOTE: > NOTE:
> >
> Because stateless functions don't have a backing instance, you can't attach a ref to a stateless function component. Normally this isn't an issue, since stateless functions do not provide an imperative API. Without an imperative API, there isn't much you could do with an instance anyway. However, if a user wants to find the DOM node of a stateless function component, they must wrap the component in a stateful component (eg. ES6 class component) and attach the ref to the stateful wrapper component. > Because stateless functions don't have a backing instance, you can't attach a ref to a stateless function component. Normally this isn't an issue, since stateless functions do not provide an imperative API. Without an imperative API, there isn't much you could do with an instance anyway. However, if a user wants to find the DOM node of a stateless function component, they must wrap the component in a stateful component (eg. ES6 class component) and attach the ref to the stateful wrapper component.
In an ideal world, most of your components would be stateless functions because these stateless components can follow a faster code path within the React core. This is the recommended pattern, when possible. In an ideal world, most of your components would be stateless functions because these stateless components can follow a faster code path within the React core. This is the recommended pattern, when possible.

2
docs/06-transferring-props.ko-KR.md

@ -50,7 +50,7 @@ ReactDOM.render(
## JSX에서 `...`를 사용해 전달하기 ## JSX에서 `...`를 사용해 전달하기
> 주의: > 주의:
> >
> 아래의 예제에서는 실험적인 ES7 문법이 사용되었기 때문에 `--harmony ` 플래그가 필요합니다. 브라우저에서 JSX 변환기를 사용 중이라면, `<script type="text/jsx;harmony=true">`를 사용해 스크립트를 작성하세요. 자세히 알아보려면 아래의 [잔여 프로퍼티와 스프레드 프로퍼티 ...](/react/docs/transferring-props-ko-KR.html#rest-and-spread-properties-...)를 확인하세요. > 아래의 예제에서는 실험적인 ES7 문법이 사용되었기 때문에 `--harmony ` 플래그가 필요합니다. 브라우저에서 JSX 변환기를 사용 중이라면, `<script type="text/jsx;harmony=true">`를 사용해 스크립트를 작성하세요. 자세히 알아보려면 아래의 [잔여 프로퍼티와 스프레드 프로퍼티 ...](/react/docs/transferring-props-ko-KR.html#rest-and-spread-properties-...)를 확인하세요.
때로는 모든 프로퍼티를 일일이 전달 하는것은 지루하고 덧없는 작업입니다. 이 경우 [구조 해체 할당(destructuring assignment)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)을 다른 프로퍼티를 함께 사용해 미상의 프로퍼티를 추출할 수 있습니다. 때로는 모든 프로퍼티를 일일이 전달 하는것은 지루하고 덧없는 작업입니다. 이 경우 [구조 해체 할당(destructuring assignment)](https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Operators/Destructuring_assignment)을 다른 프로퍼티를 함께 사용해 미상의 프로퍼티를 추출할 수 있습니다.

4
docs/06-transferring-props.zh-CN.md

@ -83,7 +83,7 @@ ReactDOM.render(
``` ```
> 注意: > 注意:
> >
> 上面例子中,`checked` 属性也是一个有效的 DOM 属性。如果你没有使用解构赋值,那么可能无意中把它传下去。 > 上面例子中,`checked` 属性也是一个有效的 DOM 属性。如果你没有使用解构赋值,那么可能无意中把它传下去。
在传递这些未知的 `other` 属性时,要经常使用解构赋值模式。 在传递这些未知的 `other` 属性时,要经常使用解构赋值模式。
@ -126,7 +126,7 @@ var FancyCheckbox = React.createClass({
``` ```
> 注意: > 注意:
> >
> 顺序很重要,把 `{...other}` 放到 JSX props 前面会使它不被覆盖。上面例子中我们可以保证 input 的 type 是 `"checkbox"` > 顺序很重要,把 `{...other}` 放到 JSX props 前面会使它不被覆盖。上面例子中我们可以保证 input 的 type 是 `"checkbox"`

36
docs/07-forms.zh-CN.md

@ -7,33 +7,33 @@ next: working-with-the-browser-zh-CN.html
--- ---
诸如 `<input>`、`<textarea>`、`<option>` 这样的表单组件不同于其他组件,因为他们可以通过用户交互发生变化。这些组件提供的界面使响应用户交互的表单数据处理更加容易。 诸如 `<input>`、`<textarea>`、`<option>` 这样的表单组件不同于其他组件,因为他们可以通过用户交互发生变化。这些组件提供的界面使响应用户交互的表单数据处理更加容易。
关于 `<form>` 事件详情请查看 [表单事件](/react/docs/events-zh-CN.html#form-events)。 关于 `<form>` 事件详情请查看 [表单事件](/react/docs/events-zh-CN.html#form-events)。
## 交互属性 ## 交互属性
表单组件支持几个受用户交互影响的属性: 表单组件支持几个受用户交互影响的属性:
* `value`,用于 `<input>`、`<textarea>` 组件。 * `value`,用于 `<input>`、`<textarea>` 组件。
* `checked`,用于类型为 `checkbox` 或者 `radio``<input>` 组件。 * `checked`,用于类型为 `checkbox` 或者 `radio``<input>` 组件。
* `selected`,用于 `<option>` 组件。 * `selected`,用于 `<option>` 组件。
在 HTML 中,`<textarea>` 的值通过子节点设置;在 React 中则应该使用 `value` 代替。 在 HTML 中,`<textarea>` 的值通过子节点设置;在 React 中则应该使用 `value` 代替。
表单组件可以通过 `onChange` 回调函数来监听组件变化。当用户做出以下交互时,`onChange` 执行并通过浏览器做出响应: 表单组件可以通过 `onChange` 回调函数来监听组件变化。当用户做出以下交互时,`onChange` 执行并通过浏览器做出响应:
* `<input>``<textarea>``value` 发生变化时。 * `<input>``<textarea>``value` 发生变化时。
* `<input>``checked` 状态改变时。 * `<input>``checked` 状态改变时。
* `<option>``selected` 状态改变时。 * `<option>``selected` 状态改变时。
和所有 DOM 事件一样,所有的 HTML 原生组件都支持 `onChange` 属性,而且可以用来监听冒泡的 `change` 事件。 和所有 DOM 事件一样,所有的 HTML 原生组件都支持 `onChange` 属性,而且可以用来监听冒泡的 `change` 事件。
> 注意: > 注意:
> >
> 对于 `<input>` and `<textarea>``onChange` 替代 — 一般应该用来替代 — the DOM's 内建的 [`oninput`](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/oninput) 事件处理。 > 对于 `<input>` and `<textarea>``onChange` 替代 — 一般应该用来替代 — the DOM's 内建的 [`oninput`](https://developer.mozilla.org/en-US/docs/Web/API/GlobalEventHandlers/oninput) 事件处理。
## 受限组件 ## 受限组件
设置了 `value``<input>` 是一个*受限*组件。 对于受限的 `<input>`,渲染出来的 HTML 元素始终保持 `value` 属性的值。例如: 设置了 `value``<input>` 是一个*受限*组件。 对于受限的 `<input>`,渲染出来的 HTML 元素始终保持 `value` 属性的值。例如:
@ -42,7 +42,7 @@ next: working-with-the-browser-zh-CN.html
return <input type="text" value="Hello!" />; return <input type="text" value="Hello!" />;
} }
``` ```
上面的代码将渲染出一个值为 `Hello!` 的 input 元素。用户在渲染出来的元素里输入任何值都不起作用,因为 React 已经赋值为 `Hello!`。如果想响应更新用户输入的值,就得使用 `onChange` 事件: 上面的代码将渲染出一个值为 `Hello!` 的 input 元素。用户在渲染出来的元素里输入任何值都不起作用,因为 React 已经赋值为 `Hello!`。如果想响应更新用户输入的值,就得使用 `onChange` 事件:
```javascript ```javascript
@ -72,7 +72,7 @@ next: working-with-the-browser-zh-CN.html
当心,在力图标准化复选框与单选按钮的变换处理中,React使用`click` 事件代替 `change` 事件。在大多数情况下它们表现的如同预期,除了在`change` handler中调用`preventDefault` 。`preventDefault` 阻止了浏览器视觉上更新输入,即使`checked`被触发。变通的方式是要么移除`preventDefault`的调用,要么把`checked` 的触发放在一个`setTimeout`里。 当心,在力图标准化复选框与单选按钮的变换处理中,React使用`click` 事件代替 `change` 事件。在大多数情况下它们表现的如同预期,除了在`change` handler中调用`preventDefault` 。`preventDefault` 阻止了浏览器视觉上更新输入,即使`checked`被触发。变通的方式是要么移除`preventDefault`的调用,要么把`checked` 的触发放在一个`setTimeout`里。
## 不受限组件 ## 不受限组件
没有设置 `value`(或者设为 `null`) 的 `<input>` 组件是一个*不受限*组件。对于不受限的 `<input>` 组件,渲染出来的元素直接反应用户输入。例如: 没有设置 `value`(或者设为 `null`) 的 `<input>` 组件是一个*不受限*组件。对于不受限的 `<input>` 组件,渲染出来的元素直接反应用户输入。例如:
@ -102,14 +102,14 @@ next: working-with-the-browser-zh-CN.html
> 注意: > 注意:
> >
> `defaultValue``defaultChecked` props 只能在内部渲染时被使用。 如果你需要在随后的渲染更新值, 你需要使用 [受限组件](#受限组件). > `defaultValue``defaultChecked` props 只能在内部渲染时被使用。 如果你需要在随后的渲染更新值, 你需要使用 [受限组件](#受限组件).
## 高级主题 ## 高级主题
### 为什么使用受限组件? ### 为什么使用受限组件?
在 React 中使用诸如 `<input>` 的表单组件时,遇到了一个在传统 HTML 中没有的挑战。比如下面的代码: 在 React 中使用诸如 `<input>` 的表单组件时,遇到了一个在传统 HTML 中没有的挑战。比如下面的代码:
```html ```html
<input type="text" name="title" value="Untitled" /> <input type="text" name="title" value="Untitled" />
@ -136,7 +136,7 @@ next: working-with-the-browser-zh-CN.html
<!-- 反例:在 React 中不要这样使用! --> <!-- 反例:在 React 中不要这样使用! -->
<textarea name="description">This is the description.</textarea> <textarea name="description">This is the description.</textarea>
``` ```
对 HTML 而言,让开发者设置多行的值很容易。但是,React 是 JavaScript,没有字符限制,可以使用 `\n` 实现换行。简言之,React 已经有 `value`、`defaultValue` 属性,`</textarea>` 组件的子节点扮演什么角色就有点模棱两可了。基于此, 设置 `<textarea>` 值时不应该使用子节点: 对 HTML 而言,让开发者设置多行的值很容易。但是,React 是 JavaScript,没有字符限制,可以使用 `\n` 实现换行。简言之,React 已经有 `value`、`defaultValue` 属性,`</textarea>` 组件的子节点扮演什么角色就有点模棱两可了。基于此, 设置 `<textarea>` 值时不应该使用子节点:
```javascript ```javascript
@ -146,7 +146,7 @@ next: working-with-the-browser-zh-CN.html
如果 *非要* 使用子节点,效果和使用 `defaultValue` 一样。 如果 *非要* 使用子节点,效果和使用 `defaultValue` 一样。
### 为什么 `<select>` 使用 `value` 属性 ### 为什么 `<select>` 使用 `value` 属性
HTML 中 `<select>` 通常使用 `<option>``selected` 属性设置选中状态;React 为了更方面的控制组件,采用以下方式代替: HTML 中 `<select>` 通常使用 `<option>``selected` 属性设置选中状态;React 为了更方面的控制组件,采用以下方式代替:

2
docs/08-working-with-the-browser.ja-JP.md

@ -32,7 +32,7 @@ var MyComponent = React.createClass({
ReactDOM.findDOMNode(this.refs.myTextInput).focus(); ReactDOM.findDOMNode(this.refs.myTextInput).focus();
}, },
render: function() { render: function() {
// この参照属性はコンポーネントがマウントされた時に、 // この参照属性はコンポーネントがマウントされた時に、
// this.refs のコンポーネントへの参照を追加します。 // this.refs のコンポーネントへの参照を追加します。
return ( return (
<div> <div>

2
docs/08-working-with-the-browser.ko-KR.md

@ -137,7 +137,7 @@ _마운트된_ 합성 컴포넌트들은 다음과 같은 메소드를 지원합
### 크로스 브라우징 이슈 ### 크로스 브라우징 이슈
React가 브라우저별 차이점을 썩 잘 추상화하긴 했지만 일부는 한정적이거나 우리가 발견하지 못한 이상한(quirky) 동작을 보여주기도 합니다. React가 브라우저별 차이점을 썩 잘 추상화하긴 했지만 일부는 한정적이거나 우리가 발견하지 못한 이상한(quirky) 동작을 보여주기도 합니다.
#### IE8에서의 onScroll 이벤트 #### IE8에서의 onScroll 이벤트

12
docs/08-working-with-the-browser.zh-CN.md

@ -9,7 +9,7 @@ next: more-about-refs-zh-CN.html
React提供了强大的抽象机制使你在大多数情况下免于直接接触DOM,但有时你仅仅只需要访问底层API,也许是为了与第三方库或者已有的代码协作。 React提供了强大的抽象机制使你在大多数情况下免于直接接触DOM,但有时你仅仅只需要访问底层API,也许是为了与第三方库或者已有的代码协作。
## 虚拟DOM ## 虚拟DOM
React如此快速是因为它从不直接操作DOM。React维持了一个快速的内存中的DOM表示。`render()` 方法返回一个DOM的*描述*,然后React能根据内存中的描述diff此描述来计算出最快速的方法更新浏览器。 React如此快速是因为它从不直接操作DOM。React维持了一个快速的内存中的DOM表示。`render()` 方法返回一个DOM的*描述*,然后React能根据内存中的描述diff此描述来计算出最快速的方法更新浏览器。
@ -76,14 +76,14 @@ React提供生命周期方法,以便你可以指定钩挂到这个过程上。
### 挂载 ### 挂载
* `getInitialState(): object` 在组件挂载前被调用. 有状态组件(Stateful components) 应该实现此函数并返回初始state的数据。 * `getInitialState(): object` 在组件挂载前被调用. 有状态组件(Stateful components) 应该实现此函数并返回初始state的数据。
* `componentWillMount()` 在挂载发生前被立即调用。 * `componentWillMount()` 在挂载发生前被立即调用。
* `componentDidMount()` 在挂载发生后被立即调用。 需要DOM node的初始化应该放在这里。 * `componentDidMount()` 在挂载发生后被立即调用。 需要DOM node的初始化应该放在这里。
### 更新 ### 更新
* `componentWillReceiveProps(object nextProps)` 当挂载的组件接收到新的props时被调用。此方法应该被用于比较`this.props` 和 `nextProps`以用于使用`this.setState()`执行状态转换。 * `componentWillReceiveProps(object nextProps)` 当挂载的组件接收到新的props时被调用。此方法应该被用于比较`this.props` 和 `nextProps`以用于使用`this.setState()`执行状态转换。
* `shouldComponentUpdate(object nextProps, object nextState): boolean` 当组件决定任何改变是否要更新到DOM时被调用。作为一个优化实现比较`this.props` 和 `nextProps` 、`this.state` 和 `nextState` ,如果React应该跳过更新,返回`false`。 * `shouldComponentUpdate(object nextProps, object nextState): boolean` 当组件决定任何改变是否要更新到DOM时被调用。作为一个优化实现比较`this.props` 和 `nextProps` 、`this.state` 和 `nextState` ,如果React应该跳过更新,返回`false`。
* `componentWillUpdate(object nextProps, object nextState)` 在更新发生前被立即调用。你不能在此调用`this.setState()`。 * `componentWillUpdate(object nextProps, object nextState)` 在更新发生前被立即调用。你不能在此调用`this.setState()`。
* `componentDidUpdate(object prevProps, object prevState)` 在更新发生后被立即调用。 * `componentDidUpdate(object prevProps, object prevState)` 在更新发生后被立即调用。
@ -108,7 +108,7 @@ _Mounted_ 复合组件同样支持以下方法:
除了这种哲学外,我们也采用了这样的立场,我们,作为一个JS库的作者,不应该把polyfills作为我们库的一部分。如果所有的库这样做,就有很大的机会发送同样的polyfill多次,这可能是一个相当大的无用代码。如果你的产品需要支援老的浏览器,你很有可能已经在使用某些东西比如[es5-shim](https://github.com/es-shims/es5-shim)。 除了这种哲学外,我们也采用了这样的立场,我们,作为一个JS库的作者,不应该把polyfills作为我们库的一部分。如果所有的库这样做,就有很大的机会发送同样的polyfill多次,这可能是一个相当大的无用代码。如果你的产品需要支援老的浏览器,你很有可能已经在使用某些东西比如[es5-shim](https://github.com/es-shims/es5-shim)。
### 需要用来支持旧浏览器的Polyfills ### 需要用来支持旧浏览器的Polyfills
来自 [kriskowal's es5-shim](https://github.com/es-shims/es5-shim)的`es5-shim.js` 提供了如下React需要的东西: 来自 [kriskowal's es5-shim](https://github.com/es-shims/es5-shim)的`es5-shim.js` 提供了如下React需要的东西:
@ -135,7 +135,7 @@ _Mounted_ 复合组件同样支持以下方法:
当在IE8里使用HTML5元素,包括`<section>`, `<article>`, `<nav>`, `<header>`, 和 `<footer>`, 同样必须包含[html5shiv](https://github.com/aFarkas/html5shiv) 或者类似的脚本。 当在IE8里使用HTML5元素,包括`<section>`, `<article>`, `<nav>`, `<header>`, 和 `<footer>`, 同样必须包含[html5shiv](https://github.com/aFarkas/html5shiv) 或者类似的脚本。
### 跨浏览器问题 ### 跨浏览器问题
尽管React在抽象浏览器不同时做的相当好,但一些浏览器被限制或者表现出怪异的行为,我们没能找到变通的方案解决。 尽管React在抽象浏览器不同时做的相当好,但一些浏览器被限制或者表现出怪异的行为,我们没能找到变通的方案解决。

8
docs/08.1-more-about-ref-zh-CN.md

@ -49,7 +49,7 @@ next: tooling-integration-zh-CN.html
```javascript ```javascript
// 反模式:不能工作. // 反模式:不能工作.
render: function() { render: function() {
var myInput = <input />; // 我打算在这个上调用这个方法 var myInput = <input />; // 我打算在这个上调用这个方法
this.rememberThisInput = myInput; // input在未来的某个时间点上!YAY! this.rememberThisInput = myInput; // input在未来的某个时间点上!YAY!
return ( return (
<div> <div>
@ -165,10 +165,10 @@ React 假设你可以向任何的从`render()` 中返回的组件附加一个特
- 执行 DOM操作,总是要求诸如`<input />` 这样的一个“原生”组件,并通过`this.refs.myInput` 来访问她的低层的MOD 节点。Refs是可以做成这个事的唯一的实践可行的方法。 - 执行 DOM操作,总是要求诸如`<input />` 这样的一个“原生”组件,并通过`this.refs.myInput` 来访问她的低层的MOD 节点。Refs是可以做成这个事的唯一的实践可行的方法。
- Refs自动管理!如果孩子被销毁了,它的ref也被销毁。在这里不用担心内存(除非你做了一些疯狂的事情来自己保持一个引用)。 - Refs自动管理!如果孩子被销毁了,它的ref也被销毁。在这里不用担心内存(除非你做了一些疯狂的事情来自己保持一个引用)。
### 小心: ### 小心:
- *绝对不要* 在组件的render方法内部- 获 当任何组件的render方法还在调用栈中执行的时候,访问refs 。 - *绝对不要* 在组件的render方法内部- 获 当任何组件的render方法还在调用栈中执行的时候,访问refs 。
- 如果你想要保护Google 闭包编译器崩溃的内力,确保绝不作为访问一个被特别的设置为一个字符串的属性。这就意味着,如果你用`ref="myRefString"` 来定义你的ref的话,你必须使用`this.refs['myRefsString']` 来访问。 - 如果你想要保护Google 闭包编译器崩溃的内力,确保绝不作为访问一个被特别的设置为一个字符串的属性。这就意味着,如果你用`ref="myRefString"` 来定义你的ref的话,你必须使用`this.refs['myRefsString']` 来访问。
- 如果你不是用React做服务器编程的,在你的程序中,你首先的倾向是用refs来“让事情发生“。如果这是正是你的情况的话,花点时间,仔细的想想`state` 在这个组件的结构层次中应在在哪里使用。通常,正确的"拥有" 状态的地方是结构层次的高层。把状态放在那些地方通常可以消除使用`ref` 来”让事情发生” 的渴望 - 相反的,数据流通常能完成你的目标。 - 如果你不是用React做服务器编程的,在你的程序中,你首先的倾向是用refs来“让事情发生“。如果这是正是你的情况的话,花点时间,仔细的想想`state` 在这个组件的结构层次中应在在哪里使用。通常,正确的"拥有" 状态的地方是结构层次的高层。把状态放在那些地方通常可以消除使用`ref` 来”让事情发生” 的渴望 - 相反的,数据流通常能完成你的目标。

2
docs/08.1-more-about-refs.ja-JP.md

@ -144,4 +144,4 @@ Reactは `render()` からの出力であるコンポーネントであれば何
- *決して* コンポーネントのレンダリングメソッドの中の参照にアクセスしてはいけません。たとえコンポーネントのレンダリングメソッドのいずれかがコールスタックの中のどこかで動いているとしても。 - *決して* コンポーネントのレンダリングメソッドの中の参照にアクセスしてはいけません。たとえコンポーネントのレンダリングメソッドのいずれかがコールスタックの中のどこかで動いているとしても。
- もしGoogle Closure Compilerのクラッシュからの回復を守りたいなら、文字列として指定されたプロパティとしてアクセスしてはいけないことに気をつけてください。これは、 `ref="myRefString"` として参照が定義されている場合は、 `this.refs['myRefString']` を使ってアクセスしなければいけないことを意味します。 - もしGoogle Closure Compilerのクラッシュからの回復を守りたいなら、文字列として指定されたプロパティとしてアクセスしてはいけないことに気をつけてください。これは、 `ref="myRefString"` として参照が定義されている場合は、 `this.refs['myRefString']` を使ってアクセスしなければいけないことを意味します。
- まだReactでプログラムを書いたことがない場合は、アプリケーションで「何かを起こす」ために参照を使おうとするでしょう。もしそのケースだった場合は、時間をかけて `state` がコンポーネントの階層のどこで保持されるべきか批評的に考えてください。多くの場合は、そのstateを「保持する」ための固有の場所が階層の高いレベルにあることがクリアになります。そのstateをその場所に配置することはよく「何かを起こす」ために `ref` を使うための願望を排除します。代わりに、データフローは普通、目標を達成します。 - まだReactでプログラムを書いたことがない場合は、アプリケーションで「何かを起こす」ために参照を使おうとするでしょう。もしそのケースだった場合は、時間をかけて `state` がコンポーネントの階層のどこで保持されるべきか批評的に考えてください。多くの場合は、そのstateを「保持する」ための固有の場所が階層の高いレベルにあることがクリアになります。そのstateをその場所に配置することはよく「何かを起こす」ために `ref` を使うための願望を排除します。代わりに、データフローは普通、目標を達成します。

6
docs/08.1-more-about-refs.zh-CN.md

@ -38,11 +38,11 @@ next: tooling-integration-zh-CN.html
``` ```
注意,在这个例子中,我们想 "告诉" input 一些东西 - 那些最后它不能从他的props推断出来的东西。在这个场景中我们想 "告诉" 它,它应该转为获得焦点。然而,有一些挑战。从`render()` 返回的东西不是你实际的 "子" 组件的组合,而是一个在某刻特定实例的子组件的 *描述* - 一个快照。 注意,在这个例子中,我们想 "告诉" input 一些东西 - 那些最后它不能从他的props推断出来的东西。在这个场景中我们想 "告诉" 它,它应该转为获得焦点。然而,有一些挑战。从`render()` 返回的东西不是你实际的 "子" 组件的组合,而是一个在某刻特定实例的子组件的 *描述* - 一个快照。
> 注意: > 注意:
> >
> 记住,从 `render()`返回的东西不是你的 *实际的* 被渲染出的子组件实例。从 `render()` 返回的东西仅仅是一个在特定时间你的组件的子层级中的子实例的 *描述* > 记住,从 `render()`返回的东西不是你的 *实际的* 被渲染出的子组件实例。从 `render()` 返回的东西仅仅是一个在特定时间你的组件的子层级中的子实例的 *描述*
这意味着你万万不要把你从`render()`返回的东西 "抓住不放" 然后期望它变成任何有意义的东西。 这意味着你万万不要把你从`render()`返回的东西 "抓住不放" 然后期望它变成任何有意义的东西。
@ -61,7 +61,7 @@ next: tooling-integration-zh-CN.html
} }
``` ```
在这个例子中,`<input />` 仅仅是一个`<input />` 的 *描述*。 这个描述被用于为`<input />`创建一个 *真实的* **支持实例(backing instance)** 在这个例子中,`<input />` 仅仅是一个`<input />` 的 *描述*。 这个描述被用于为`<input />`创建一个 *真实的* **支持实例(backing instance)**
所以我们如何与input的 *真实的*支持实例对话? 所以我们如何与input的 *真实的*支持实例对话?

2
docs/09-tooling-integration.ja-JP.md

@ -38,4 +38,4 @@ JSXを使用したい場合、[ダウンロードページに](/react/downloads.
### 役に立つオープンソースのプロジェクト ### 役に立つオープンソースのプロジェクト
オープンソースコミュニティがJSXをいくつかのエディタやビルドシステムで使用するためのツールを作成しました。一覧は[JSXのインテグレーション](https://github.com/facebook/react/wiki/Complementary-Tools#jsx-integrations)を参照してください。 オープンソースコミュニティがJSXをいくつかのエディタやビルドシステムで使用するためのツールを作成しました。一覧は[JSXのインテグレーション](https://github.com/facebook/react/wiki/Complementary-Tools#jsx-integrations)を参照してください。

10
docs/10-addons.zh-CN.md

@ -8,17 +8,17 @@ next: animation-zh-CN.html
`React.addons` 是我们放置一些用来构建React apps的有用的工具的地方。 **这些应该被认为是实验性的** 但是最终批量进入核心代码或者一个有用的工具库中: `React.addons` 是我们放置一些用来构建React apps的有用的工具的地方。 **这些应该被认为是实验性的** 但是最终批量进入核心代码或者一个有用的工具库中:
- [`TransitionGroup` 和 `CSSTransitionGroup`](animation.html), 用来处理通常不能简单实现的动画和转换,比如在组件移除之前。 - [`TransitionGroup` 和 `CSSTransitionGroup`](animation.html), 用来处理通常不能简单实现的动画和转换,比如在组件移除之前。
- [`LinkedStateMixin`](two-way-binding-helpers.html), 简化用户的表单输入数据与组件状态的协调。 - [`LinkedStateMixin`](two-way-binding-helpers.html), 简化用户的表单输入数据与组件状态的协调。
- [`cloneWithProps`](clone-with-props.html), 创建React组件的浅拷贝并改变它们的props。 - [`cloneWithProps`](clone-with-props.html), 创建React组件的浅拷贝并改变它们的props。
- [`createFragment`](create-fragment.html), 创建一组外键的子级。 - [`createFragment`](create-fragment.html), 创建一组外键的子级。
- [`update`](update.html), 一个使不可变数据在JavaScript里更易处理的辅助函数。 - [`update`](update.html), 一个使不可变数据在JavaScript里更易处理的辅助函数。
- [`PureRenderMixin`](pure-render-mixin.html), 一个特定情况下的性能优化器。 - [`PureRenderMixin`](pure-render-mixin.html), 一个特定情况下的性能优化器。
下面的插件只存在开发版(未压缩)React中: 下面的插件只存在开发版(未压缩)React中:
- [`TestUtils`](test-utils.html), 用于写测试用例的简单的辅助工具(仅存在于未压缩版本)。 - [`TestUtils`](test-utils.html), 用于写测试用例的简单的辅助工具(仅存在于未压缩版本)。
- [`Perf`](perf.html), 用于测量性能并给你提示哪里可以优化。 - [`Perf`](perf.html), 用于测量性能并给你提示哪里可以优化。
要获取插件,使用 `react-with-addons.js` (和它的压缩副本)而不是通常的 `react.js` 要获取插件,使用 `react-with-addons.js` (和它的压缩副本)而不是通常的 `react.js`

2
docs/10.1-animation.ja-JP.md

@ -199,7 +199,7 @@ var ImageCarousel = React.createClass({
### 異なるコンポーネントをレンダリングする ### 異なるコンポーネントをレンダリングする
デフォルトで、 `ReactTransitionGroup``span` としてレンダリングされます。この動きは、 `component` プロパティによって変更できます。例えば、 `<ul>` をレンダリングしたい場合は以下のようになります。 デフォルトで、 `ReactTransitionGroup``span` としてレンダリングされます。この動きは、 `component` プロパティによって変更できます。例えば、 `<ul>` をレンダリングしたい場合は以下のようになります。
```javascript{1} ```javascript{1}
<ReactTransitionGroup component="ul"> <ReactTransitionGroup component="ul">

2
docs/10.1-animation.zh-CN.md

@ -144,7 +144,7 @@ var TodoList = React.createClass({
... ...
``` ```
### 动画组必须挂载才工作 ### 动画组必须挂载才工作
为了使过渡效果应用到子级上,`ReactCSSTransitionGroup`必须已经挂载到了DOM或者 prop `transitionAppear` 必须被设置为 `true`。下面的例子不会工作,因为 `ReactCSSTransitionGroup` 随同新项目被挂载,而不是新项目在它内部被挂载。将这与上面的[入门指南](#入门指南)部分比较一下,看看不同。 为了使过渡效果应用到子级上,`ReactCSSTransitionGroup`必须已经挂载到了DOM或者 prop `transitionAppear` 必须被设置为 `true`。下面的例子不会工作,因为 `ReactCSSTransitionGroup` 随同新项目被挂载,而不是新项目在它内部被挂载。将这与上面的[入门指南](#入门指南)部分比较一下,看看不同。

4
docs/10.2-form-input-binding-sugar.ja-JP.md

@ -15,7 +15,7 @@ Reactでは所有者から子要素へと、データの流れは一方向です
しかし、データやプログラムに戻る流れを読む必要が有るアプリケーションもたくさんあります。例えば、フォームを作る際に、ユーザのインプットを受け取った時には、Reactの `state` を更新したいと思うことはよくあるでしょう。または、JavaScriptでレイアウトを形作ったり、DOM要素のサイズの変化に反応したいと思うでしょう。 しかし、データやプログラムに戻る流れを読む必要が有るアプリケーションもたくさんあります。例えば、フォームを作る際に、ユーザのインプットを受け取った時には、Reactの `state` を更新したいと思うことはよくあるでしょう。または、JavaScriptでレイアウトを形作ったり、DOM要素のサイズの変化に反応したいと思うでしょう。
Reactでは、「変更」のイベントを検知し、データソース(普通はDOMです)を読み、コンポーネントのうちの1つの上で `setState()` を呼ぶことでこの要求を満たすことができます。「データフローのループを止めること」は理解しやすく、維持しやすいプログラムを明確に導きます。詳細な情報については、[フォームのドキュメント](/react/docs/forms-ja-JP.html)をご覧ください。 Reactでは、「変更」のイベントを検知し、データソース(普通はDOMです)を読み、コンポーネントのうちの1つの上で `setState()` を呼ぶことでこの要求を満たすことができます。「データフローのループを止めること」は理解しやすく、維持しやすいプログラムを明確に導きます。詳細な情報については、[フォームのドキュメント](/react/docs/forms-ja-JP.html)をご覧ください。
2ウェイバインディングはDOMの値が常にReactの `state` と一致していることを暗黙に強制しますが、簡潔で、多くの種類のアプリケーションをサポートします。上で説明されているような共通のデータフローループパターンのセットアップや、データソースをReactの `state` に「接続する」ための糖衣構文である `ReactLink` が提供されています。 2ウェイバインディングはDOMの値が常にReactの `state` と一致していることを暗黙に強制しますが、簡潔で、多くの種類のアプリケーションをサポートします。上で説明されているような共通のデータフローループパターンのセットアップや、データソースをReactの `state` に「接続する」ための糖衣構文である `ReactLink` が提供されています。
@ -111,4 +111,4 @@ var WithoutLink = React.createClass({
}); });
``` ```
`valueLink` プロパティも同様にとても単純です。単純に `onChange` イベントをハンドルし、 `this.props.valueLink.requestChange()` を呼び、 `this.props.value` の代わりに `this.props.valueLink.value` を使用します。それだけです! `valueLink` プロパティも同様にとても単純です。単純に `onChange` イベントをハンドルし、 `this.props.valueLink.requestChange()` を呼び、 `this.props.value` の代わりに `this.props.valueLink.value` を使用します。それだけです!

4
docs/10.4-test-utils.it-IT.md

@ -19,14 +19,14 @@ Simulate.{eventName}(
Simula l'inoltro di un evento su un nodo DOM con dei dati dell'evento opzionali `eventData`. **Questa è probabilmente l'utilità più essenziale in `ReactTestUtils`.** Simula l'inoltro di un evento su un nodo DOM con dei dati dell'evento opzionali `eventData`. **Questa è probabilmente l'utilità più essenziale in `ReactTestUtils`.**
**Cliccare un elemento** **Cliccare un elemento**
```javascript ```javascript
var node = ReactDOM.findDOMNode(this.refs.button); var node = ReactDOM.findDOMNode(this.refs.button);
React.addons.TestUtils.Simulate.click(node); React.addons.TestUtils.Simulate.click(node);
``` ```
**Cambiare il valore di un campo di input e in seguito premere INVIO** **Cambiare il valore di un campo di input e in seguito premere INVIO**
```javascript ```javascript
var node = ReactDOM.findDOMNode(this.refs.input); var node = ReactDOM.findDOMNode(this.refs.input);

6
docs/10.4-test-utils.md

@ -23,7 +23,7 @@ Simulate.{eventName}(
Simulate an event dispatch on a DOM node with optional `eventData` event data. **This is possibly the single most useful utility in `ReactTestUtils`.** Simulate an event dispatch on a DOM node with optional `eventData` event data. **This is possibly the single most useful utility in `ReactTestUtils`.**
**Clicking an element** **Clicking an element**
```javascript ```javascript
// <button ref="button">...</button> // <button ref="button">...</button>
@ -31,7 +31,7 @@ var node = this.refs.button;
ReactTestUtils.Simulate.click(node); ReactTestUtils.Simulate.click(node);
``` ```
**Changing the value of an input field and then pressing ENTER** **Changing the value of an input field and then pressing ENTER**
```javascript ```javascript
// <input ref="input" /> // <input ref="input" />
@ -58,7 +58,7 @@ Render a component into a detached DOM node in the document. **This function req
> Note: > Note:
> >
> You will need to have `window`, `window.document` and `window.document.createElement` > You will need to have `window`, `window.document` and `window.document.createElement`
globally available **before** you import React. Otherwise React will think it can't access the DOM and methods like `setState` won't work. globally available **before** you import React. Otherwise React will think it can't access the DOM and methods like `setState` won't work.
### mockComponent ### mockComponent

2
docs/10.5-clone-with-props.ja-JP.md

@ -31,4 +31,4 @@ ReactDOM.render(
); );
``` ```
`cloneWithProps``key``ref` をクローンされた要素に渡すことはありません。 `className``style` は自動的にマージされます。 `cloneWithProps``key``ref` をクローンされた要素に渡すことはありません。 `className``style` は自動的にマージされます。

2
docs/10.7-update.ja-JP.md

@ -56,7 +56,7 @@ var newData = React.addons.update(myData, {
## 使用できるコマンド ## 使用できるコマンド
* `{$push: array}` ターゲットに `array` の全ての要素を `push()` します。 * `{$push: array}` ターゲットに `array` の全ての要素を `push()` します。
* `{$unshift: array}` ターゲットの `array` の全ての要素を `unshift()` します。 * `{$unshift: array}` ターゲットの `array` の全ての要素を `unshift()` します。
* `{$splice: array of arrays}` `arrays` の全ての要素について、その要素によって提供されるパラメータのターゲットにおいて、 `splice()` を呼び出します。 * `{$splice: array of arrays}` `arrays` の全ての要素について、その要素によって提供されるパラメータのターゲットにおいて、 `splice()` を呼び出します。
* `{$set: any}` ターゲットを完全に置き換えます。 * `{$set: any}` ターゲットを完全に置き換えます。

2
docs/10.8-pure-render-mixin.ja-JP.md

@ -25,4 +25,4 @@ React.createClass({
> 注意: > 注意:
> このミックスインはオブジェクトの比較のみを行います。それらが複雑なデータ構造を持っていた場合、深い位置における違いは見逃されることがあります。単純なpropsやstateをコンポーネントが持っている場合にのみ、使用してください。深いデータ構造が変更されることが分かっている場合は、 `forceUpdate()` を使用してください。または、ネストされたデータの比較を速く行うために[不変オブジェクト](https://facebook.github.io/immutable-js/)の使用を考えてみてください。 > このミックスインはオブジェクトの比較のみを行います。それらが複雑なデータ構造を持っていた場合、深い位置における違いは見逃されることがあります。単純なpropsやstateをコンポーネントが持っている場合にのみ、使用してください。深いデータ構造が変更されることが分かっている場合は、 `forceUpdate()` を使用してください。または、ネストされたデータの比較を速く行うために[不変オブジェクト](https://facebook.github.io/immutable-js/)の使用を考えてみてください。
> 更に、 `shouldComponentUpdate` は全てのコンポーネントのサブツリーのアップデートをスキップします。全ての子要素のコンポーネントもまた、「ピュア」であることを確認してください。 > 更に、 `shouldComponentUpdate` は全てのコンポーネントのサブツリーのアップデートをスキップします。全ての子要素のコンポーネントもまた、「ピュア」であることを確認してください。

2
docs/11-advanced-performance.ja-JP.md

@ -202,4 +202,4 @@ this.messages = this.messages.push(new Message({
データ構造が不変であることで、push関数の結果を `this.messages` にアサインする必要があることに注意してください。 データ構造が不変であることで、push関数の結果を `this.messages` にアサインする必要があることに注意してください。
Reactの側では、 immutable-js のデータ構造をコンポーネントの state を保持するために使用する場合は、 `PureRenderMixin` をコンポーネントにミックスし、再レンダリングのプロセスを短縮することもできます。 Reactの側では、 immutable-js のデータ構造をコンポーネントの state を保持するために使用する場合は、 `PureRenderMixin` をコンポーネントにミックスし、再レンダリングのプロセスを短縮することもできます。

2
docs/ref-01-top-level-api.ja-JP.md

@ -82,7 +82,7 @@ ReactComponent render(
> 注意: > 注意:
> `React.render()` は渡されたコンテナーノードの内容を制御します。内部に存在するDOM要素は最初に呼ばれた際に置き換えられます。その後に呼ばれた場合は、ReactのDOMの差分アルゴリズムを使用して、効率的に更新されます。 > `React.render()` は渡されたコンテナーノードの内容を制御します。内部に存在するDOM要素は最初に呼ばれた際に置き換えられます。その後に呼ばれた場合は、ReactのDOMの差分アルゴリズムを使用して、効率的に更新されます。
> >
> `React.render()` はコンテナーノードの変更は行いません(コンテナの子要素のみ変更を行います)。今後、存在する子要素を上書きすることなく、存在するDOMノードにコンポーネントを挿入することが可能になるでしょう。 > `React.render()` はコンテナーノードの変更は行いません(コンテナの子要素のみ変更を行います)。今後、存在する子要素を上書きすることなく、存在するDOMノードにコンポーネントを挿入することが可能になるでしょう。
### React.unmountComponentAtNode ### React.unmountComponentAtNode

2
docs/ref-02-component-api.md

@ -29,7 +29,7 @@ Here is the simple object usage:
setState({mykey: 'my new value'}); setState({mykey: 'my new value'});
``` ```
It's also possible to pass a function with the signature `function(state, props)`. This can be useful in some cases when you want to enqueue an atomic update that consults the previous value of state+props before setting any values. For instance, suppose we wanted to increment a value in state: It's also possible to pass a function with the signature `function(state, props)`. This can be useful in some cases when you want to enqueue an atomic update that consults the previous value of state+props before setting any values. For instance, suppose we wanted to increment a value in state:
```javascript ```javascript
setState(function(previousState, currentProps) { setState(function(previousState, currentProps) {

2
docs/ref-02-component-api.zh-CN.md

@ -78,7 +78,7 @@ forceUpdate(
调用 `forceUpdate()` 将会导致 `render()` 跳过 `shouldComponentUpdate()` 在组件上被调用,这会为子级触发正常的生命周期方法。包括每个子级的 `shouldComponentUpdate()` 方法。如果标记改变了,React 仍仅只更新 DOM。 调用 `forceUpdate()` 将会导致 `render()` 跳过 `shouldComponentUpdate()` 在组件上被调用,这会为子级触发正常的生命周期方法。包括每个子级的 `shouldComponentUpdate()` 方法。如果标记改变了,React 仍仅只更新 DOM。
通常你应该试着避免所有对 `forceUpdate()` 的使用并且在 `render()` 里只从 `this.props``this.state` 读取。这会使你的组件 "纯粹" 并且你的组件会更简单和高效。 通常你应该试着避免所有对 `forceUpdate()` 的使用并且在 `render()` 里只从 `this.props``this.state` 读取。这会使你的组件 "纯粹" 并且你的组件会更简单和高效。
### getDOMNode ### getDOMNode

4
docs/ref-05-events.it-IT.md

@ -35,8 +35,8 @@ string type
## Riutilizzo degli eventi ## Riutilizzo degli eventi
Gli oggetti `SyntheticEvent` sono gestiti come un pool. Ciò significa che ciascun oggetto `SyntheticEvent` sarà riutilizzato e tutte le sue proprietà annullate dopo che la callback dell'evento è stata invocata. Gli oggetti `SyntheticEvent` sono gestiti come un pool. Ciò significa che ciascun oggetto `SyntheticEvent` sarà riutilizzato e tutte le sue proprietà annullate dopo che la callback dell'evento è stata invocata.
Ciò avviene per ragioni di performance. Ciò avviene per ragioni di performance.
Per questo motivo non potrai accedere all'evento in maniera asincrona. Per questo motivo non potrai accedere all'evento in maniera asincrona.
```javascript ```javascript

4
docs/ref-05-events.md

@ -35,8 +35,8 @@ string type
## Event pooling ## Event pooling
The `SyntheticEvent` is pooled. This means that the `SyntheticEvent` object will be reused and all properties will be nullified after the event callback has been invoked. The `SyntheticEvent` is pooled. This means that the `SyntheticEvent` object will be reused and all properties will be nullified after the event callback has been invoked.
This is for performance reasons. This is for performance reasons.
As such, you cannot access the event in an asynchronous way. As such, you cannot access the event in an asynchronous way.
```javascript ```javascript

2
docs/ref-05-events.zh-CN.md

@ -56,7 +56,7 @@ DOMDataTransfer clipboardData
``` ```
### 键盘事件 ### 键盘事件
事件名称: 事件名称:

2
docs/ref-08-reconciliation.md

@ -30,7 +30,7 @@ In order to do a tree diff, we first need to be able to diff two nodes. There ar
### Different Node Types ### Different Node Types
If the node type is different, React is going to treat them as two different sub-trees, throw away the first one and build/insert the second one. If the node type is different, React is going to treat them as two different sub-trees, throw away the first one and build/insert the second one.
```xml ```xml
renderA: <div /> renderA: <div />

16
docs/thinking-in-react.zh-CN.md

@ -44,10 +44,10 @@ React许多优秀的部分之一是它如何使你随着构建 app 来思考 app
在这里你会看到,在我们简单的APP里有五个组件.我用斜体表示每个组件的数据. 在这里你会看到,在我们简单的APP里有五个组件.我用斜体表示每个组件的数据.
1. **`FilterableProductTable` (orange):** 包含示例的整体 1. **`FilterableProductTable` (orange):** 包含示例的整体
2. **`SearchBar` (blue):** 接受所有 *用户输入* 2. **`SearchBar` (blue):** 接受所有 *用户输入*
3. **`ProductTable` (green):** 基于 *用户输入* 显示和过滤 *数据集合(data collection)* 3. **`ProductTable` (green):** 基于 *用户输入* 显示和过滤 *数据集合(data collection)*
4. **`ProductCategoryRow` (turquoise):** 为每个 *分类* 显示一个列表头 4. **`ProductCategoryRow` (turquoise):** 为每个 *分类* 显示一个列表头
5. **`ProductRow` (red):** 为每个 *产品* 显示一个行 5. **`ProductRow` (red):** 为每个 *产品* 显示一个行
如果你看着 `ProductTable`,你会看到表的头(包含了 "Name" 和 "Price" 标签) 不是独立的组件.这是一个个人喜好问题,并且无论哪种方式都有争论.对于这个例子,我把它留做 `ProductTable` 的一部分,因为它是 *data collection*渲染的一部分,而 *data collection*渲染是 `ProductTable` 的职责.然而,当列表头增长到复杂的时候(例如 如果我们添加排序的功能性),那么无疑的使它成为独立的 `ProductTableHeader` 组件是有意义的. 如果你看着 `ProductTable`,你会看到表的头(包含了 "Name" 和 "Price" 标签) 不是独立的组件.这是一个个人喜好问题,并且无论哪种方式都有争论.对于这个例子,我把它留做 `ProductTable` 的一部分,因为它是 *data collection*渲染的一部分,而 *data collection*渲染是 `ProductTable` 的职责.然而,当列表头增长到复杂的时候(例如 如果我们添加排序的功能性),那么无疑的使它成为独立的 `ProductTableHeader` 组件是有意义的.
@ -85,10 +85,10 @@ React许多优秀的部分之一是它如何使你随着构建 app 来思考 app
考虑我们例子应用中数据的所有块.我们有: 考虑我们例子应用中数据的所有块.我们有:
* 原始的产品列表 * 原始的产品列表
* 用户输入的搜索文本 * 用户输入的搜索文本
* checkbox的值 * checkbox的值
* 产品的滤过的列表 * 产品的滤过的列表
让我们遍历每一个并指出哪一个是state.简单的问三个关于每个数据块的问题: 让我们遍历每一个并指出哪一个是state.简单的问三个关于每个数据块的问题:
@ -132,7 +132,7 @@ React许多优秀的部分之一是它如何使你随着构建 app 来思考 app
<iframe width="100%" height="300" src="https://jsfiddle.net/reactjs/n47gckhr/embedded/" allowfullscreen="allowfullscreen" frameborder="0"></iframe> <iframe width="100%" height="300" src="https://jsfiddle.net/reactjs/n47gckhr/embedded/" allowfullscreen="allowfullscreen" frameborder="0"></iframe>
到目前为止,我们已经构建了一个应用, 它以props 和 state 沿着层级向下流动的功能正确渲染。现在是时候支持数据的另一种流动了:在层级深处的表单组件需要更新 `FilterableProductTable` 里的state. 到目前为止,我们已经构建了一个应用, 它以props 和 state 沿着层级向下流动的功能正确渲染。现在是时候支持数据的另一种流动了:在层级深处的表单组件需要更新 `FilterableProductTable` 里的state.
React 让数据显式流动,使理解你的应用如何工作变得简单,但是相对于传统的双向数据绑定,确实需要打多一些的字。 React 提供了一个叫做 `ReactLink` 的插件来使这种模式和双向数据绑定一样方便,但是考虑到这篇文章的目的,我们将会保持所有东西都直截了当。 React 让数据显式流动,使理解你的应用如何工作变得简单,但是相对于传统的双向数据绑定,确实需要打多一些的字。 React 提供了一个叫做 `ReactLink` 的插件来使这种模式和双向数据绑定一样方便,但是考虑到这篇文章的目的,我们将会保持所有东西都直截了当。

8
docs/tutorial.zh-CN.md

@ -5,9 +5,9 @@ prev: getting-started-zh-CN.html
next: thinking-in-react-zh-CN.html next: thinking-in-react-zh-CN.html
--- ---
我们将建立一个你可以放进博客的简单却真实的评论框,一个 Disqus、LiveFyre 或 Facebook comments 提供的实时评论的基础版本。 我们将建立一个你可以放进博客的简单却真实的评论框,一个 Disqus、LiveFyre 或 Facebook comments 提供的实时评论的基础版本。
我们将提供: 我们将提供:
* 一个所有评论的视图 * 一个所有评论的视图
* 一个用于提交评论的表单 * 一个用于提交评论的表单
@ -212,7 +212,7 @@ var CommentList = React.createClass({
}); });
``` ```
注意,我们已经从 `CommentList` 组件传递了一些数据到 `Comment` 组件。例如,我们传递了 *Pete Hunt* (通过属性)和 *This is one comment* (通过 XML-风格的子节点)给第一个 `Comment`。如上面提到的那样, `Comment` 组件将会通过 `this.props.author``this.props.children` 访问 这些 '属性'。 注意,我们已经从 `CommentList` 组件传递了一些数据到 `Comment` 组件。例如,我们传递了 *Pete Hunt* (通过属性)和 *This is one comment* (通过 XML-风格的子节点)给第一个 `Comment`。如上面提到的那样, `Comment` 组件将会通过 `this.props.author``this.props.children` 访问 这些 '属性'。
### 添加 Markdown ### 添加 Markdown
@ -281,7 +281,7 @@ var Comment = React.createClass({
**记住:** 使用这个功能你会依赖于 marked 是安全的。既然如此,我们传递 `sanitize: true` 告诉 marked escape 源码里任何的 HTML 标记,而不是直接不变的让他们通过。 **记住:** 使用这个功能你会依赖于 marked 是安全的。既然如此,我们传递 `sanitize: true` 告诉 marked escape 源码里任何的 HTML 标记,而不是直接不变的让他们通过。
### 挂钩数据模型 ### 挂钩数据模型
到目前为止我们已经完成了在源码里直接插入评论。作为替代,让我们渲染一团 JSON 数据到评论列表里。最终数据将会来自服务器,但是现在,写在你的源代码中: 到目前为止我们已经完成了在源码里直接插入评论。作为替代,让我们渲染一团 JSON 数据到评论列表里。最终数据将会来自服务器,但是现在,写在你的源代码中:

Loading…
Cancel
Save