質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

Q&A

解決済

1回答

3280閲覧

reactの処理順がわからない。

pokemonta

総合スコア170

React Native

React Nativeは、ネイティブモバイルアプリ(iOS/Android)を作成できるJavaScriptフレームワークです。Reactと同じ設計のため、宣言的なコンポーネントでリッチなUIを開発することが可能です。

React.js

Reactは、アプリケーションのインターフェースを構築するためのオープンソースJavaScriptライブラリです。

0グッド

0クリップ

投稿2020/09/30 14:19

編集2020/09/30 14:34

以下のサイトを参考にJSONをパースして
レンダリングするプログラムを作りたいです。
リンク内容

私の理解と考え方
すみません。初心者です。おかしいところがあればご指摘願います。
・最終的には、ReactDOM.renderでレンダリングするので
レンダリングしたい対象とレンダリングする場所を引数で指定する。
今回は、<App />とdocument.getElementById("root")。
ここまでは理解できました。
・Appのreturnの中でDOMで記述されている部分が、レンダリングしたい対象のはずなので

jsx

1 <div> 2 <button onClick={this.getJson}>Get Json</button> 3 {this.memberList(this.state.member)} 4 </div>

 が初期表示で描画される。 
onClickでgetJsonが指定されているのでgetリクエストが実行され、レンダリングされる。

memberListやconstructor(が実行されるタイミングがまったくわかりません。
*追記
{this.memberList(this.state.member)}
の一文から、初期表示時とonClickの2回実行されていると予想した。

それとthis.state = { member: [] };が必要なのかもわかりません。
また、list.map((member, index)構文の使い方がわかりません
具体的な実装方法はわかりませんが
items.map((item) => みたいな書き方で
item数<li>すれば同じことができるのではないでしょうか?

リンク内容
この辺りをご教示願います。

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

guest

回答1

0

ベストアンサー

memberListやconstructor(が実行されるタイミングがまったくわかりません。

まずconstructorのタイミングですが、そのクラスコンポーネントが呼ばれたタイミングです。
参考元のリンクを見ましたが、Appというクラスコンポーネントだったので、具体的には
<App />のようにJSXの記法で呼び出され、実際に描画されるタイミングでconstructorが実行されます。

続いてmemberListですが、追記にて

初期表示時とonClickの2回実行されていると予想した。

とされてる通りの認識です。
クラスコンポーネントは通常、自身が持つ状態(state)が変わる度に再描画されるため、
onClickを実行する度にstateが更新されるなら、その都度再描画が行われ、ひいてはthis. memberListも実行されます。

それとthis.state = { member: [] };が必要なのかもわかりません。

おそらくconstructor内の記述の話だと思いますが、必要です。
そのクラスコンポーネントでどういったstateを用いるかの定義をしています。

また、list.map((member, index)構文の使い方がわかりません
item数<li>すれば同じことができるのではないでしょうか?

mapはざっくり説明すると、特定の配列から新しい配列を作ります。
参考元ではlistという配列からmemberListというJSX.Elementの配列を作っています。

もしmapを使わずfor等を使っていたら、memberList関数は下記のようになります。

javascript

1memberList(list) { 2 let memberList = []; 3 for(let i = 0; i < list.length ; i++) { 4 const member = list[i]; 5 // ※参考元にもなかったため省きましたが、本来は<li>に`key`を付けるべきです。 6 memberList.push( 7 <li> 8 {member.name} {member.age} 9 </li> 10 ); 11 } 12 13 return (<ul>{memberList}</ul>); 14}

投稿2020/09/30 23:27

nekoniki

総合スコア2409

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問