🎄teratailクリスマスプレゼントキャンペーン2024🎄』開催中!

\teratail特別グッズやAmazonギフトカード最大2,000円分が当たる!/

詳細はこちら
JavaScript

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

React.js

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

Q&A

解決済

1回答

1244閲覧

APIで取得したデータの画面表示について

afro097

総合スコア6

JavaScript

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

API

APIはApplication Programming Interfaceの略です。APIはプログラムにリクエストされるサービスがどのように動作するかを、デベロッパーが定めたものです。

React.js

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

0グッド

0クリップ

投稿2021/02/06 03:30

編集2021/02/06 03:32

こんにちは。

今SpotifyAPI + Reactで楽曲の詳細情報がわかるポートフォリオを作成しているのですが、
取得したデータを画面に描画する方法がわからず詰まっております。

App.js

1import React, { useState, useEffect } from "react"; 2import Header from "../Molecules/Header"; 3import { Credentials } from "../Credentials"; 4import axios from "axios"; 5import { useLocation } from "react-router-dom"; 6 7const Search = () => { 8 // test 9 const spotify = Credentials(); 10 11 const [token, setToken] = useState(""); 12 const [trackContents, setTracksContents] = useState( 13 [] 14 ); 15 16 const location = useLocation(); 17 18 useEffect(() => { 19//検索された文字をURLに反映し、反映された文字列を取得 20 const searchParams = new URLSearchParams(location.search); 21 const queryResult = searchParams.get("query"); 22 console.log(queryResult); 23 24 // tokenを発行し、権限を付与 25 // 付与されたTokenをuseStateのtokenに代入し、値を保持 26 axios("https://accounts.spotify.com/api/token", { 27 headers: { 28 "Content-Type": "application/x-www-form-urlencoded", 29 Authorization: 30 "Basic " + btoa(spotify.ClientId + ":" + spotify.ClientSecret), 31 }, 32 data: "grant_type=client_credentials", 33 method: "POST", 34 }).then((tokenResponse) => { 35 console.log(tokenResponse.data.access_token); 36 setToken(tokenResponse.data.access_token); 37 38 // 付与されたtokenを使い、楽曲情報にアクセス 39 // 取得した楽曲情報をstateに保存 40 // eslint-disable-next-line no-undef 41 axios(`https://api.spotify.com/v1/audio-features?ids=${queryResult}`, { 42 method: "GET", 43 headers: { Authorization: "Bearer " + tokenResponse.data.access_token }, 44 }).then((tracksReaponse) => { 45 setTracksContents( 46 tracksReaponse.data.audio_features 47 ); 48 }); 49 }); 50 }, [location.search, spotify.ClientId, spotify.ClientSecret]); 51 52 // test end 53 54console.log(trackContents) 55 56 57 return ( 58 <div> 59 <Header /> 60 <h2>{trackContents.id}hello</h2> 61 </div> 62 ); 63}; 64 65export default Search; 66

console.logでデータが取得できているか確認したところ、
下記のように無事取得できています。
イメージ説明

取得した情報を画面に表示したいのですが、

<h2>{trackContents.id}hello</h2>

としても、画面に表示されません。
(helloは表示されています)

非常に初歩的な質問で申し訳ございませんが、
どなたか表示方法をご教授いただけないでしょうか。

よろしくお願いいたします。

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

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

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

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

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

hoshi-takanori

2021/02/06 03:47

trackContents は配列っぽいので、<h2>{trackContents[0].id}hello</h2> なのでは。
afro097

2021/02/07 02:04

上記のように実装したところ、表示できました! ありがとうございます!
guest

回答1

0

自己解決

hoshi-takanori様にご回答いただいた方法で実装したところできました!

投稿2021/02/07 02:04

afro097

総合スコア6

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

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

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

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

ただいまの回答率
85.36%

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

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

質問する

関連した質問