@@ -149,7 +149,7 @@ class ShoppingList extends React.Component {
149
149
// Example usage: <ShoppingList name="Mark" />
150
150
```
151
151
152
- この妙な XML のようなタグについてはすぐ後で説明します。コンポーネントは、React に何を描画したいかを伝えます。データが変更されると、React はコンポーネントを効率よく更新して再レンダーします 。
152
+ この妙な XML のようなタグについてはすぐ後で説明します。コンポーネントは、React に何を描画したいかを伝えます。データが変更されると、React はコンポーネントを効率よく更新して再描画します 。
153
153
154
154
ここで ` ShoppingList ` は ** React コンポーネントのクラス** 、もしくは ** React コンポーネントの型** です。コンポーネントは props("properties" の略)と呼ばれるパラメータを受け取り、` render ` メソッドを通じて、表示するビューの階層構造を返します。
155
155
@@ -168,7 +168,7 @@ return React.createElement('div', {className: 'shopping-list'},
168
168
169
169
JSX では JavaScript のすべての能力を使うことができます。* どのような* JavaScript の式も JSX 内で中括弧に囲んで記入することができます。各 React 要素は、変数に格納したりプログラム内で受け渡ししたりできる、JavaScript のオブジェクトです。
170
170
171
- 上記の ` ShoppingList ` コンポーネントは ` <div /> ` や ` <li /> ` といった組み込みの DOM コンポーネントのみをレンダーしていますが 、自分で書いたカスタム React コンポーネントを組み合わせることも可能です。例えば、` <ShoppingList /> ` と書いてショッピングリスト全体を指し示すことができます。それぞれの React のコンポーネントはカプセル化されており独立して動作します。これにより単純なコンポーネントから複雑な UI を作成することができます。
171
+ 上記の ` ShoppingList ` コンポーネントは ` <div /> ` や ` <li /> ` といった組み込みの DOM コンポーネントのみを描画していますが 、自分で書いたカスタム React コンポーネントを組み合わせることも可能です。例えば、` <ShoppingList /> ` と書いてショッピングリスト全体を指し示すことができます。それぞれの React のコンポーネントはカプセル化されており独立して動作します。これにより単純なコンポーネントから複雑な UI を作成することができます。
172
172
173
173
## スターターコードの中身を確認する {#inspecting-the-starter-code}
174
174
@@ -182,7 +182,7 @@ JSX では JavaScript のすべての能力を使うことができます。*ど
182
182
* Board(盤面)
183
183
* Game
184
184
185
- Square(マス目)コンポーネントは 1 つの ` <button> ` をレンダーし 、Board(盤面)が 9 個のマス目をレンダーしています 。Game コンポーネントは盤面と、後ほど埋めることになるプレースホルダーを描画しています。この時点ではインタラクティブなコンポーネントはありません。
185
+ Square(マス目)コンポーネントは 1 つの ` <button> ` を描画し 、Board(盤面)が 9 個のマス目を描画しています 。Game コンポーネントは盤面と、後ほど埋めることになるプレースホルダーを描画しています。この時点ではインタラクティブなコンポーネントはありません。
186
186
187
187
### データを Props 経由で渡す {#passing-data-through-props}
188
188
@@ -260,7 +260,7 @@ class Square extends React.Component {
260
260
>}
261
261
>```
262
262
>
263
- > `onClick={() => alert('click')}` と記載したときに `onClick` プロパティに渡しているのは*関数*であることに注意してください。React はクリックされるまでこの関数を実行しません。`() =>` を書くのを忘れて `onClick={alert('click')}` と書くのはよくある間違いであり、こうするとコンポーネントが再レンダーされるたびにアラートが表示されてしまいます 。
263
+ > `onClick={() => alert('click')}` と記載したときに `onClick` プロパティに渡しているのは*関数*であることに注意してください。React はクリックされるまでこの関数を実行しません。`() =>` を書くのを忘れて `onClick={alert('click')}` と書くのはよくある間違いであり、こうするとコンポーネントが再描画されるたびにアラートが表示されてしまいます 。
264
264
265
265
次のステップとして、Square コンポーネントに自分がクリックされたことを「覚えさせ」て、"X" マークでマスを埋めるようにさせます。コンポーネントが何かを「覚える」ためには、**state** というものを使います。
266
266
@@ -321,7 +321,7 @@ class Square extends React.Component {
321
321
}
322
322
```
323
323
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 ` が出てくるはずです。
325
325
326
326
` setState ` をコンポーネント内で呼び出すと、React はその内部の子コンポーネントも自動的に更新します。
327
327
@@ -515,7 +515,7 @@ class Board extends React.Component {
515
515
516
516
** [ この時点でのコード全体を見る] ( https://codepen.io/gaearon/pen/ybbQJX?editors=0010 ) **
517
517
518
- これらの変更を加えれば、再びマス目をクリックすると値が書き込まれるようになります。しかし今や、状態は個々の Square コンポーネントではなく Board コンポーネント内に保存されています。Board の state が変更になると、個々の Square コンポーネントも自動的に再レンダーされます 。全てのマス目の状態を Board コンポーネント内で保持するようにしたことで、この後でどちらが勝者か判定できるようになります。
518
+ これらの変更を加えれば、再びマス目をクリックすると値が書き込まれるようになります。しかし今や、状態は個々の Square コンポーネントではなく Board コンポーネント内に保存されています。Board の state が変更になると、個々の Square コンポーネントも自動的に再描画されます 。全てのマス目の状態を Board コンポーネント内で保持するようにしたことで、この後でどちらが勝者か判定できるようになります。
519
519
520
520
Square コンポーネントはもう自分で state を管理しないようになったので、Board コンポーネントから値を受け取って、クリックされた時はそのことを Board コンポーネントに伝えるだけになりました。React 用語でいうと、Square コンポーネントは** 制御されたコンポーネント** (controlled component) になったということです。Board が Square コンポーネントを全面的に制御しています。
521
521
@@ -557,9 +557,9 @@ var newPlayer = Object.assign({}, player, {score: 2});
557
557
558
558
イミュータブルなオブジェクトでの変更の検出はとても簡単です。参照しているイミュータブルなオブジェクトが前と別のものであれば、変更があったということです。
559
559
560
- #### React の再レンダータイミングの決定 {#determining-when-to-re-render-in-react}
560
+ #### React の再描画タイミングの決定 {#determining-when-to-re-render-in-react}
561
561
562
- イミュータビリティの主な利点は、React で * pure component* を構築しやすくなるということです。イミュータブルなデータは変更があったかどうか簡単に分かるため、コンポーネントをいつ再レンダーすべきなのか決定しやすくなります 。
562
+ イミュータビリティの主な利点は、React で * pure component* を構築しやすくなるということです。イミュータブルなデータは変更があったかどうか簡単に分かるため、コンポーネントをいつ再描画すべきなのか決定しやすくなります 。
563
563
564
564
` shouldComponentUpdate() ` および * pure component* をどのように作成するのかについては、[ パフォーマンス最適化] ( /docs/optimizing-performance.html#examples ) のページで説明しています。
565
565
@@ -802,7 +802,7 @@ history = [
802
802
803
803
トップレベルの Game コンポーネント内で過去の着手の履歴を表示したいと思います。そのためには Game コンポーネントが ` history ` にアクセスできる必要がありますので、` history ` という state はトップレベルの Game コンポーネントに置くようにしましょう。
804
804
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 に描画させることができるようになります 。
806
806
807
807
まず、Game コンポーネントの初期 state をコンストラクタ内でセットします。
808
808
@@ -1053,7 +1053,7 @@ Game の `render` メソッド内で `history` に `map` を作用させてみ
1053
1053
1054
1054
### key を選ぶ {#picking-a-key}
1055
1055
1056
- リストをレンダーする際 、リストの項目それぞれについて、React はとある情報を保持します。リストが変更になった場合、React はどのアイテムが変更になったのかを知る必要があります。リストのアイテムは追加された可能性も、削除された可能性も、並び替えられた可能性も、中身自体が変更になった可能性もあります。
1056
+ リストを描画する際 、リストの項目それぞれについて、React はとある情報を保持します。リストが変更になった場合、React はどのアイテムが変更になったのかを知る必要があります。リストのアイテムは追加された可能性も、削除された可能性も、並び替えられた可能性も、中身自体が変更になった可能性もあります。
1057
1057
1058
1058
例えば以下のツリーから:
1059
1059
@@ -1076,7 +1076,7 @@ Game の `render` メソッド内で `history` に `map` を作用させてみ
1076
1076
<li key ={user.id} >{user.name}: {user.taskCount} tasks left</li >
1077
1077
```
1078
1078
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 で再作成されます。
1080
1080
1081
1081
` key ` は特別なプロパティであり React によって予約されています(より応用的な機能である ` ref ` も同様です)。要素が作成される際、React は ` key ` プロパティを引き抜いて、返される要素に直接その ` key ` を格納します。` key ` は ` props ` の一部のようにも思えますが、` this.props.key ` で参照できません。React はどの子要素を更新すべきかを決定する際に、` key ` を自動的に使用します。コンポーネントが自身の ` key ` について確認する方法はありません。
1082
1082
@@ -1170,7 +1170,7 @@ class Game extends React.Component {
1170
1170
}
1171
1171
```
1172
1172
1173
- 最後に、Game コンポーネントの ` render ` を書き換えて、常に最後の着手後の状態をレンダーするのではなく ` stepNumber ` によって現在選択されている着手をレンダーするようにします 。
1173
+ 最後に、Game コンポーネントの ` render ` を書き換えて、常に最後の着手後の状態を描画するのではなく ` stepNumber ` によって現在選択されている着手を描画するようにします 。
1174
1174
1175
1175
``` javascript{3}
1176
1176
render() {
0 commit comments