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

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

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

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

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

Q&A

解決済

1回答

567閲覧

reactの処理順を教えていただけないでしょうか

pokemonta

総合スコア170

Redux

Reduxは、JavaScriptアプリケーションの状態を管理するためのオープンソースライブラリです。ReactやAngularで一般的にユーザーインターフェイスの構築に利用されます。

Node.js

Node.jsとはGoogleのV8 JavaScriptエンジンを使用しているサーバーサイドのイベント駆動型プログラムです。

JavaScript

JavaScriptは、プログラミング言語のひとつです。ネットスケープコミュニケーションズで開発されました。 開発当初はLiveScriptと呼ばれていましたが、業務提携していたサン・マイクロシステムズが開発したJavaが脚光を浴びていたことから、JavaScriptと改名されました。 動きのあるWebページを作ることを目的に開発されたもので、主要なWebブラウザのほとんどに搭載されています。

React.js

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

0グッド

0クリップ

投稿2020/07/14 13:59

編集2020/07/20 20:28

react

1import React from "react"; 2import { render } from "react-dom"; 3 4import axios from "axios"; 5 6class App extends React.Component { 7 constructor() { 8 super(); 9 this.state = { member: [] }; 10 } 11 12 memberList(list) { 13 const memberList = list.map((member, index) => { 14 return ( 15 <li> 16 {member.name} {member.age} 17 </li> 18 ); 19 }); 20 21 return <ul>{memberList}</ul>; 22 } 23 24 render() { 25 console.log(this.state.member); 26 return ( 27 <div> 28 <button onClick={this.getJson}>Get Json</button> 29 {this.memberList(this.state.member)} 30 </div> 31 ); 32 } 33 34 getJson = () => { 35 const url = "https://api.myjson.com/bins/159wqn"; 36 37 axios.get(url).then(res => { 38 this.setState(res.data); 39 }); 40 }; 41} 42 43render(<App />, document.getElementById("root"));

上記コードにおいて、getJson()で取得したレスポンスをsetStateに格納しているところまでは何となく理解しましたが
どのようにして描画しているか理解できません。

私の見解を記載しますので認識があっているか教えて頂けないでしょうか
・constructorのstate にmember配列を格納する。初期値はカラ。
・onClickでgetJson()実行
・レスポンスをStateに格納。
↑setStateしたらmember配列に自動で格納されるのでしょうか???
・memberListが実行されテーブルに描画される?
↑なぜlist.map((member, index) をしないといけないのでしょうか??

このあたりの構文はどこで勉強すればよいのでしょうか?

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

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

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

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

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

guest

回答1

0

ベストアンサー

>>・レスポンスをStateに格納。
>>↑setStateしたらmember配列に自動で格納されるのでしょうか???
されないと思います
setState({ member: res.data })
のように代入先を明示する必要があります
バージョンによってはそういった動作もしたのかもしれませんがわかりません

>>↑なぜlist.map((member, index) をしないといけないのでしょうか??
memberの中身はオブジェクトなので、そのまま

<div>{member}</div>

としてしまうと表示できません
mapを使ってループさせ、中身を取り出す必要があります。
質問文のコードでは、

<div> <button onClick={this.getJson}>Get Json</button> **{this.memberList(this.state.member)}** </div>

となっているので、
関数memberList()の返り値をそのまま描画している事になります。
memberList()の中身ですが、

memberList(list) { const memberList = list.map((member, index) => { return ( <li> {member.name} {member.age} </li> ); }); return <ul>{memberList}</ul>; }

ループの結果をconstでmemberListへ代入しているようです
変数memberListの中身は

<li> tanaka 40 </li> <li> yamada 20 </li> <li> yoshida 20 </li>

みたいな感じです

この変数memberListが、関数memberList()の最後にある、

return <ul>{memberList}</ul>;

で扱われていて、
結局関数memberList()の返り値は

<ul> <li> tanaka 40 </li> <li> yamada 20 </li> <li> yoshida 20 </li> </ul>

という事になります。

mapの引数についてですが、
memberが当該ループで扱っているデータを格納してある変数
(上のリンクで言えば、{name: 'tanaka', age: '40'} みたいな中身になってます。
なので、member.nameで tanaka という文字列を取得できます。)
indexが、現在のループが何回目なのか、もしくはmemberの何個目を扱っているのかが格納されている変数です。
コード上では参照されていないので、書かなくても動くと思います。

投稿2020/07/21 01:45

web_inago

総合スコア74

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

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

pokemonta

2020/07/21 03:38

ご解説ありがとうございました。 自分で実装するとなると複雑なのでどこから手を付けたらよいのか? (描画する部分から実装するのかなど。memberListも描画部ですが ロジックも含まれるので後回しにしよ。みたいな判断も必要になる?) また、どのように実装すればよいのか イメージできません。 (なぜmap使おうという発想になるのか。 さらにsetStateなどの組み込み関数の使い方も調べていくことになる??) 諸々の思考方法、調査方法はどのように身に着けていければよいのでしょうか?
web_inago

2020/07/21 03:59

何がしたいのか (何かを作りたいのか、それともまだ明確に作りたいものがなくて、基礎として学んでいるのか) 現状どの程度の理解なのか (生のjsの経験、reactの経験、他言語の経験) を具体的に教えていただければ、 自分も大した経験があるわけではないですが、参考程度のアドバイスはできるかもれません
pokemonta

2020/07/21 04:41

すみません。react初めてですので 何から手を付けたらよいのかわかっていません。 昔、phpを1か月だけやったことあります。 あとjavaやpythonの書籍は読んだことあります。書いたことは皆無ですが。。。 reactを使って基礎的なアプリをつくりたいです。 todoアプリが一般的な例として上がっていますが、 書いてある内容をいまいち理解できませんでした。構文や なぜその部分にjumpしているのかなど ある程度知ってる前提で書かれていて解説が薄いです jsの経験もあまりありません。ただonclikイベントなんかは理解できます。 アプローチの仕方やわからなかった時の調べ方なんかを参考にさせてもらいたいです。
web_inago

2020/07/22 14:42

jsの基礎を学んでから、reactのチュートリアルに着手するのが一般的だと思います。 reactはjsのライブラリなので、いきなりreactから学ぶのはあまりお勧めしません。 jsの基礎に関しては、自分の話になってしまいますが、 Progateという学習サービスあります。 もちろん学習サービスなので解説も丁寧ですし、 カリキュラムの中に実行環境があるので、ハンズオンで進めることができるのでお勧めですね。 何より無料ですし、有料プランも月980円ぐらいだったと思います。 reactのカリキュラムもあります。 progateでjsとreactをざっくりで良いので理解したら、react公式のチュートリアルが良いと思います。 todoアプリを実装するということになると、データを保持する(DBなど)必要もあるので、 localStorageでやってみたり、laravelやrailsでAPIを作って連携したりすることになります。 laravelやrailsも確かprogateにカリキュラムがあります。 どちらも公式チュートリアルがあるので、かなりボリューミーですがオススメです。
pokemonta

2020/07/27 00:47

なるほど、手始めにjsですね。ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.48%

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

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

質問する

関連した質問