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

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

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

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

React.js

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

Q&A

解決済

1回答

1269閲覧

React.js map関数の処理中の値のみを取得する方法

Akagaki

総合スコア1

JavaScript

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

React.js

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

0グッド

0クリップ

投稿2021/08/04 18:41

前提・実現したいこと

初めての質問で情報の不足や言葉足らずな点も多いかと思います、何卒ご教示お願いします。

reactにて配列をmap関数を使い一覧表示しております。
map関数の処理の中で要素の一部を取り出しメソッドの引数として扱いたいです。

発生している問題・エラーメッセージ

取り出した値が該当処理の値だけでなく、一覧表示している全ての処理の値となってしまっております。

該当のソースコード

JavaScript

1getProjectName(id){ 2 const projectData = this.state.userProjects.find((obj)=>obj.id === id); 3 console.log(projectData); 4 } 5 6render() { 7const waitCard = this.state.waitTask.map((obj,index)=> 8 <div key={index} > 9 <div>{obj.name}</div> 10 <div>{this.getProjectName(obj.project_id)}</div> 11 </div>)

試したこと

イベントハンドラの引数に同じ値を設定した際は、該当処理の値だけが取得できておりました。

JavaScript

1getProjectName(id){ 2 const projectData = this.state.userProjects.find((obj)=>obj.id === id); 3 console.log(projectData); 4 } 5 6render() { 7const waitCard = this.state.waitTask.map((obj,index)=> 8 <div key={index} onClick={() =>{this.handleClickOpen(obj.project_id)}}> 9 <div>{obj.name}</div> 10 <div>{this.getProjectName(obj.project_id)}</div> 11 </div>)

補足情報(FW/ツールのバージョンなど)

react: 17.0.2
react-dom: 17.0.2

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

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

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

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

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

hoshi-takanori

2021/08/05 00:08

getProjectName は何も return してないので、this.getProjectName(obj.project_id) のところは何も表示されないのでは。あと、waitTask の中身はどうなってますか? ひとつのプロジェクトにつき複数のタスクがある感じでしょうか?
guest

回答1

0

ベストアンサー

取り出した値が該当処理の値だけでなく、一覧表示している全ての処理の値となってしまっております。

mapは全要素回るので、getProjectNameも各要素ごとに1回ずつ呼ばれてしかるべきかと思いますが、そういうことではないのでしょうか?

投稿2021/08/04 22:33

maisumakun

総合スコア145208

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

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

Akagaki

2021/08/04 22:57 編集

ご回答ありがとうございます。 説明不足で申し訳ございません。 要素が4つ入っている配列を`map`で回した際、`getProjectName`は、4つの値を取得して3回呼ばれております。 各要素ごと1回ずつ、要素の値だけを取得したいです。
maisumakun

2021/08/04 23:00

> 4つの値を取得して3回呼ばれております。 renderが複数回行われただけ、ということはありませんか?
Akagaki

2021/08/05 00:02

APIを3回取得する箇所があり、そこで3回レンダリングされており値は1回ずつ取得できていたようです。 ご回答ありがとうございました。
guest

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.46%

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

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

質問する

関連した質問