Skip to content

Commit 91229c9

Browse files
authored
Merge pull request #706 from reactjs/sync-a0cacd7d
Sync with react.dev @ a0cacd7
2 parents 59f8974 + ef5b323 commit 91229c9

21 files changed

+664
-21
lines changed
Loading
Loading
Loading
Loading
Loading
Loading
Loading
Loading
11.7 KB
Loading
12.3 KB
Loading

src/content/community/meetups.md

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -48,6 +48,7 @@ title: React ミーティング
4848
* [Montreal, QC - React Native](https://www.meetup.com/fr-FR/React-Native-MTL/)
4949
* [Vancouver, BC](https://www.meetup.com/ReactJS-Vancouver-Meetup/)
5050
* [Ottawa, ON](https://www.meetup.com/Ottawa-ReactJS-Meetup/)
51+
* [Saskatoon, SK](https://www.meetup.com/saskatoon-react-meetup/)
5152
* [Toronto, ON](https://www.meetup.com/Toronto-React-Native/events/)
5253

5354
## Chile {/*chile*/}

src/content/learn/describing-the-ui.md

Lines changed: 24 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ React は、ユーザインターフェース(UI)を表示するための Ja
1818
* [コンポーネントを条件付きでレンダーする方法](/learn/conditional-rendering)
1919
* [複数のコンポーネントを同時にレンダーする方法](/learn/rendering-lists)
2020
* [コンポーネントを純粋に保つことで混乱を避ける方法](/learn/keeping-components-pure)
21+
* [UI をツリーとして理解することが有用である理由](/learn/understanding-your-ui-as-a-tree)
2122

2223
</YouWillLearn>
2324

@@ -523,6 +524,29 @@ export default function TeaSet() {
523524

524525
</LearnMore>
525526

527+
## UI をツリーとして理解する {/*your-ui-as-a-tree*/}
528+
529+
React はコンポーネント間あるいはモジュール間の関係性をモデル化するために、ツリー構造を使用します。
530+
531+
React レンダーツリーとはコンポーネントの親子関係を表現したものです。
532+
533+
<Diagram name="generic_render_tree" height={250} width={500} alt="5 つのノードからなるツリー。それぞれのノードはコンポーネントを表している。ルートノードはツリーの最上部にあり 'Root Component' と書かれている。そこから 2 本の矢印が下に伸びており 'Component A' および 'Component C' と書かれたノードを指している。それぞれの矢印には 'renders' と書かれている。'Component A' からは 'renders' と書かれた矢印が 'Component B' と書かれたノードに伸びている。'Component C' からは 'renders' と書かれた矢印が 'Component D' と書かれたノードに伸びている。">React のレンダーツリーの例</Diagram>
534+
535+
ツリーの上側、つまりルートに近いコンポーネントはトップレベルコンポーネントです。子を持たないコンポーネントはリーフ(葉)コンポーネントです。このようなコンポーネントの分類は、データの流れやレンダーパフォーマンスを理解する際に有用です。
536+
537+
アプリを理解する上では、JavaScript のモジュール間の関係性をモデルすることも重要です。このようなものをモジュール依存関係ツリーと呼びます。
538+
539+
<Diagram name="generic_dependency_tree" height={250} width={500} alt="5 つのノードからなるツリー。それぞれのノードは JavaScript のモジュールを表している。最上部のノードは 'RootModule.js' と書かれている。そこから 'ModuleA.js'、'ModuleB.js'、'ModuleC.js' へと 3 本の矢印が伸びている。各矢印には 'imports' と書かれている。'ModuleC.js' からは 'imports' と書かれた矢印が 'ModuleD.js' と書かれたノードに伸びている。">モジュール依存関係ツリーの例</Diagram>
540+
541+
依存関係ツリーは、関連する JavaScript コードをすべてバンドルしてクライアントがダウンロード・レンダーできるようにするために、ビルドツールでよく使用されます。バンドルサイズが大きいと、React アプリのユーザ体験は悪化します。モジュール依存関係ツリーを理解することは、そのような問題をデバッグするのに役立ちます。
542+
543+
<LearnMore path="/learn/understanding-your-ui-as-a-tree">
544+
545+
[**UI をツリーとして理解する**](/learn/understanding-your-ui-as-a-tree)を読んで、レンダーツリーやモジュール依存関係ツリーの作り方、そしてそのような考え方がユーザ体験やパフォーマンスを改善する際にどのように役立つのかについて学びましょう。
546+
547+
</LearnMore>
548+
549+
526550
## 次のステップ {/*whats-next*/}
527551

528552
[初めてのコンポーネント](/learn/your-first-component)に進んで、この章をページごとに読み進めましょう!

src/content/learn/preserving-and-resetting-state.md

Lines changed: 4 additions & 20 deletions
Original file line numberDiff line numberDiff line change
@@ -10,33 +10,17 @@ state は複数のコンポーネント間で独立しています。React は U
1010

1111
<YouWillLearn>
1212

13-
* React にはコンポーネント構造がどのように「見える」のか
1413
* React が state の保持とリセットを行うタイミング
1514
* React にコンポーネントの state のリセットを強制する方法
1615
* key とタイプが state の保持にどのように影響するか
1716

1817
</YouWillLearn>
1918

20-
## UI ツリー {/*the-ui-tree*/}
19+
## state はレンダーツリー内の位置に結びついている {/*state-is-tied-to-a-position-in-the-tree*/}
2120

22-
ブラウザは、UI をモデル化するために多くのツリー構造を使用します。[DOM](https://developer.mozilla.org/docs/Web/API/Document_Object_Model/Introduction) は HTML 要素を、[CSSOM](https://developer.mozilla.org/docs/Web/API/CSS_Object_Model) は CSS を表現します。[アクセシビリティツリー](https://developer.mozilla.org/docs/Glossary/Accessibility_tree)というものもあります!
23-
24-
React もまた、ユーザが作成した UI を管理しモデリングするためにツリー構造を使用します。React は JSX から **UI ツリー**を作成します。次に React DOM が、その UI ツリーに合わせてブラウザの DOM 要素を更新します。(React Native の場合は UI ツリーをモバイルプラットフォーム固有の要素に変換します。)
25-
26-
<DiagramGroup>
27-
28-
<Diagram name="preserving_state_dom_tree" height={193} width={864} alt="横に並んだ 3 つのセクションで構成された図。最初のセクションには、'コンポーネント A'、'コンポーネント B'、'コンポーネント C' という名前の 3 つの長方形が縦に並んでいる。次のセクションに移る矢印があり、その上には React ロゴが付いた 'React' というラベルがある。中央のセクションには、ルートに 'A'、その子に 'B'、'C' とラベル付けされたコンポーネントツリー。次のセクションへの矢印は 'React DOM' というラベルの上に React ロゴが付いている。最後のセクションではブラウザのフレームの中に 8 個のノードからなるツリーがあり、一部は中央セクションからのものであるためハイライトされている。">
29-
30-
React はコンポーネントから UI ツリーを作成し、React DOM はそれを DOM に変換する
31-
32-
</Diagram>
33-
34-
</DiagramGroup>
35-
36-
## state はツリー内の位置に結びついている {/*state-is-tied-to-a-position-in-the-tree*/}
37-
38-
コンポーネントに state を与えると、その state はそのコンポーネントの内部で「生存」しているように思えるかもしれません。しかし、実際には state は React の中に保持されています。React は、「UI ツリー内でそのコンポーネントがどの位置にあるか」に基づいて、保持している各 state を正しいコンポーネントに関連付けます。
21+
React はあなたの UI のコンポーネント構造を[レンダーツリー](learn/understanding-your-ui-as-a-tree#the-render-tree)としてビルドします。
3922

23+
コンポーネントに state を与えると、その state はそのコンポーネントの内部で「生存」しているように思えるかもしれません。しかし、実際には state は React の中に保持されています。React は、「レンダーツリー内でそのコンポーネントがどの位置にあるか」に基づいて、保持している各 state を正しいコンポーネントに関連付けます。
4024

4125
以下のコードには `<Counter />` JSX タグは 1 つしかありませんが、それが 2 つの異なる位置にレンダーされています。
4226

@@ -190,7 +174,7 @@ state の更新
190174
</DiagramGroup>
191175

192176

193-
React は、同じコンポーネントを同じ位置でレンダーしている限り、その state を保持し続けます。これを確認するため、両方のカウンタを増加させてから、"Render the second counter" のチェックボックスのチェックを外して 2 つ目のコンポーネントを削除し、再びチェックを入れて元に戻してみてください。
177+
React は、同じコンポーネントをツリー内の同じ位置でレンダーしている限り、その state を保持し続けます。これを確認するため、両方のカウンタを増加させてから、"Render the second counter" のチェックボックスのチェックを外して 2 つ目のコンポーネントを削除し、再びチェックを入れて元に戻してみてください。
194178

195179
<Sandpack>
196180

0 commit comments

Comments
 (0)