Skip to content

Commit afc5efe

Browse files
authored
使用する用語の統一
「レンダー」「描画」が同じ意味で表記ゆれしていたため、「レンダー」→「描画」で統一しました
1 parent 6c9b55c commit afc5efe

File tree

1 file changed

+12
-12
lines changed

1 file changed

+12
-12
lines changed

content/tutorial/tutorial.md

+12-12
Original file line numberDiff line numberDiff line change
@@ -149,7 +149,7 @@ class ShoppingList extends React.Component {
149149
// Example usage: <ShoppingList name="Mark" />
150150
```
151151

152-
この妙な XML のようなタグについてはすぐ後で説明します。コンポーネントは、React に何を描画したいかを伝えます。データが変更されると、React はコンポーネントを効率よく更新して再レンダーします
152+
この妙な XML のようなタグについてはすぐ後で説明します。コンポーネントは、React に何を描画したいかを伝えます。データが変更されると、React はコンポーネントを効率よく更新して再描画します
153153

154154
ここで `ShoppingList`**React コンポーネントのクラス**、もしくは **React コンポーネントの型**です。コンポーネントは props("properties" の略)と呼ばれるパラメータを受け取り、`render` メソッドを通じて、表示するビューの階層構造を返します。
155155

@@ -168,7 +168,7 @@ return React.createElement('div', {className: 'shopping-list'},
168168

169169
JSX では JavaScript のすべての能力を使うことができます。*どのような* JavaScript の式も JSX 内で中括弧に囲んで記入することができます。各 React 要素は、変数に格納したりプログラム内で受け渡ししたりできる、JavaScript のオブジェクトです。
170170

171-
上記の `ShoppingList` コンポーネントは `<div />``<li />` といった組み込みの DOM コンポーネントのみをレンダーしていますが、自分で書いたカスタム React コンポーネントを組み合わせることも可能です。例えば、`<ShoppingList />` と書いてショッピングリスト全体を指し示すことができます。それぞれの React のコンポーネントはカプセル化されており独立して動作します。これにより単純なコンポーネントから複雑な UI を作成することができます。
171+
上記の `ShoppingList` コンポーネントは `<div />``<li />` といった組み込みの DOM コンポーネントのみを描画していますが、自分で書いたカスタム React コンポーネントを組み合わせることも可能です。例えば、`<ShoppingList />` と書いてショッピングリスト全体を指し示すことができます。それぞれの React のコンポーネントはカプセル化されており独立して動作します。これにより単純なコンポーネントから複雑な UI を作成することができます。
172172

173173
## スターターコードの中身を確認する {#inspecting-the-starter-code}
174174

@@ -182,7 +182,7 @@ JSX では JavaScript のすべての能力を使うことができます。*ど
182182
* Board(盤面)
183183
* Game
184184

185-
Square(マス目)コンポーネントは 1 つの `<button>` をレンダーし、Board(盤面)が 9 個のマス目をレンダーしています。Game コンポーネントは盤面と、後ほど埋めることになるプレースホルダーを描画しています。この時点ではインタラクティブなコンポーネントはありません。
185+
Square(マス目)コンポーネントは 1 つの `<button>` を描画し、Board(盤面)が 9 個のマス目を描画しています。Game コンポーネントは盤面と、後ほど埋めることになるプレースホルダーを描画しています。この時点ではインタラクティブなコンポーネントはありません。
186186

187187
### データを Props 経由で渡す {#passing-data-through-props}
188188

@@ -260,7 +260,7 @@ class Square extends React.Component {
260260
>}
261261
>```
262262
>
263-
> `onClick={() => alert('click')}` と記載したときに `onClick` プロパティに渡しているのは*関数*であることに注意してください。React はクリックされるまでこの関数を実行しません。`() =>` を書くのを忘れて `onClick={alert('click')}` と書くのはよくある間違いであり、こうするとコンポーネントが再レンダーされるたびにアラートが表示されてしまいます
263+
> `onClick={() => alert('click')}` と記載したときに `onClick` プロパティに渡しているのは*関数*であることに注意してください。React はクリックされるまでこの関数を実行しません。`() =>` を書くのを忘れて `onClick={alert('click')}` と書くのはよくある間違いであり、こうするとコンポーネントが再描画されるたびにアラートが表示されてしまいます
264264
265265
次のステップとして、Square コンポーネントに自分がクリックされたことを「覚えさせ」て、"X" マークでマスを埋めるようにさせます。コンポーネントが何かを「覚える」ためには、**state** というものを使います。
266266
@@ -321,7 +321,7 @@ class Square extends React.Component {
321321
}
322322
```
323323

324-
Square の `render` メソッド内に書かれた `onClick` ハンドラ内で `this.setState` を呼び出すことで、React に `<button>` がクリックされたら常に再レンダーするよう伝えることができます。データ更新のあと、この Square の `this.state.value``'X'` になっていますので、盤面に `X` と表示されることになります。どのマス目をクリックしても `X` が出てくるはずです。
324+
Square の `render` メソッド内に書かれた `onClick` ハンドラ内で `this.setState` を呼び出すことで、React に `<button>` がクリックされたら常に再描画するよう伝えることができます。データ更新のあと、この Square の `this.state.value``'X'` になっていますので、盤面に `X` と表示されることになります。どのマス目をクリックしても `X` が出てくるはずです。
325325

326326
`setState` をコンポーネント内で呼び出すと、React はその内部の子コンポーネントも自動的に更新します。
327327

@@ -515,7 +515,7 @@ class Board extends React.Component {
515515

516516
**[この時点でのコード全体を見る](https://codepen.io/gaearon/pen/ybbQJX?editors=0010)**
517517

518-
これらの変更を加えれば、再びマス目をクリックすると値が書き込まれるようになります。しかし今や、状態は個々の Square コンポーネントではなく Board コンポーネント内に保存されています。Board の state が変更になると、個々の Square コンポーネントも自動的に再レンダーされます。全てのマス目の状態を Board コンポーネント内で保持するようにしたことで、この後でどちらが勝者か判定できるようになります。
518+
これらの変更を加えれば、再びマス目をクリックすると値が書き込まれるようになります。しかし今や、状態は個々の Square コンポーネントではなく Board コンポーネント内に保存されています。Board の state が変更になると、個々の Square コンポーネントも自動的に再描画されます。全てのマス目の状態を Board コンポーネント内で保持するようにしたことで、この後でどちらが勝者か判定できるようになります。
519519

520520
Square コンポーネントはもう自分で state を管理しないようになったので、Board コンポーネントから値を受け取って、クリックされた時はそのことを Board コンポーネントに伝えるだけになりました。React 用語でいうと、Square コンポーネントは**制御されたコンポーネント** (controlled component) になったということです。Board が Square コンポーネントを全面的に制御しています。
521521

@@ -557,9 +557,9 @@ var newPlayer = Object.assign({}, player, {score: 2});
557557

558558
イミュータブルなオブジェクトでの変更の検出はとても簡単です。参照しているイミュータブルなオブジェクトが前と別のものであれば、変更があったということです。
559559

560-
#### React の再レンダータイミングの決定 {#determining-when-to-re-render-in-react}
560+
#### React の再描画タイミングの決定 {#determining-when-to-re-render-in-react}
561561

562-
イミュータビリティの主な利点は、React で *pure component* を構築しやすくなるということです。イミュータブルなデータは変更があったかどうか簡単に分かるため、コンポーネントをいつ再レンダーすべきなのか決定しやすくなります
562+
イミュータビリティの主な利点は、React で *pure component* を構築しやすくなるということです。イミュータブルなデータは変更があったかどうか簡単に分かるため、コンポーネントをいつ再描画すべきなのか決定しやすくなります
563563

564564
`shouldComponentUpdate()` および *pure component* をどのように作成するのかについては、[パフォーマンス最適化](/docs/optimizing-performance.html#examples)のページで説明しています。
565565

@@ -802,7 +802,7 @@ history = [
802802

803803
トップレベルの Game コンポーネント内で過去の着手の履歴を表示したいと思います。そのためには Game コンポーネントが `history` にアクセスできる必要がありますので、`history` という state はトップレベルの Game コンポーネントに置くようにしましょう。
804804

805-
`hisotory` state を Game コンポーネント内に置くことで、`squares` の state を、子である Board コンポーネントから取り除くことができます。Square コンポーネントにあった[「state をリフトアップ」](#lifting-state-up)して Board コンポーネントに移動したときと全く同様にして、今度は Board にある state をトップレベルの Game コンポーネントにリフトアップしましょう。これにより Game コンポーネントは Board のデータを完全に制御することになり、`history` 内の過去の手番のデータを Board にレンダーさせることができるようになります
805+
`hisotory` state を Game コンポーネント内に置くことで、`squares` の state を、子である Board コンポーネントから取り除くことができます。Square コンポーネントにあった[「state をリフトアップ」](#lifting-state-up)して Board コンポーネントに移動したときと全く同様にして、今度は Board にある state をトップレベルの Game コンポーネントにリフトアップしましょう。これにより Game コンポーネントは Board のデータを完全に制御することになり、`history` 内の過去の手番のデータを Board に描画させることができるようになります
806806

807807
まず、Game コンポーネントの初期 state をコンストラクタ内でセットします。
808808

@@ -1053,7 +1053,7 @@ Game の `render` メソッド内で `history` に `map` を作用させてみ
10531053

10541054
### key を選ぶ {#picking-a-key}
10551055

1056-
リストをレンダーする際、リストの項目それぞれについて、React はとある情報を保持します。リストが変更になった場合、React はどのアイテムが変更になったのかを知る必要があります。リストのアイテムは追加された可能性も、削除された可能性も、並び替えられた可能性も、中身自体が変更になった可能性もあります。
1056+
リストを描画する際、リストの項目それぞれについて、React はとある情報を保持します。リストが変更になった場合、React はどのアイテムが変更になったのかを知る必要があります。リストのアイテムは追加された可能性も、削除された可能性も、並び替えられた可能性も、中身自体が変更になった可能性もあります。
10571057

10581058
例えば以下のツリーから:
10591059

@@ -1076,7 +1076,7 @@ Game の `render` メソッド内で `history` に `map` を作用させてみ
10761076
<li key={user.id}>{user.name}: {user.taskCount} tasks left</li>
10771077
```
10781078

1079-
リストが再レンダーされる際、React はそれぞれのリスト項目の key について、前回のリスト項目内に同じ key を持つものがないか探します。もし以前になかった key がリストに含まれていれば、React はコンポーネントを作成します。もし以前のリストにあった key が新しいリストに含まれていなければ、React は以前のコンポーネントを破棄します。もし 2 つの key がマッチした場合、対応するコンポーネントは移動されます。key はそれぞれのコンポーネントの同一性に関する情報を React に与え、それにより React は再レンダー間で state を保持できるようになります。もしコンポーネントの key が変化していれば、コンポーネントは破棄されて新しい state で再作成されます。
1079+
リストが再描画される際、React はそれぞれのリスト項目の key について、前回のリスト項目内に同じ key を持つものがないか探します。もし以前になかった key がリストに含まれていれば、React はコンポーネントを作成します。もし以前のリストにあった key が新しいリストに含まれていなければ、React は以前のコンポーネントを破棄します。もし 2 つの key がマッチした場合、対応するコンポーネントは移動されます。key はそれぞれのコンポーネントの同一性に関する情報を React に与え、それにより React は再描画間で state を保持できるようになります。もしコンポーネントの key が変化していれば、コンポーネントは破棄されて新しい state で再作成されます。
10801080

10811081
`key` は特別なプロパティであり React によって予約されています(より応用的な機能である `ref` も同様です)。要素が作成される際、React は `key` プロパティを引き抜いて、返される要素に直接その `key` を格納します。`key``props` の一部のようにも思えますが、`this.props.key` で参照できません。React はどの子要素を更新すべきかを決定する際に、`key` を自動的に使用します。コンポーネントが自身の `key` について確認する方法はありません。
10821082

@@ -1170,7 +1170,7 @@ class Game extends React.Component {
11701170
}
11711171
```
11721172

1173-
最後に、Game コンポーネントの `render` を書き換えて、常に最後の着手後の状態をレンダーするのではなく `stepNumber` によって現在選択されている着手をレンダーするようにします
1173+
最後に、Game コンポーネントの `render` を書き換えて、常に最後の着手後の状態を描画するのではなく `stepNumber` によって現在選択されている着手を描画するようにします
11741174

11751175
```javascript{3}
11761176
render() {

0 commit comments

Comments
 (0)