ReactでAPIを使ったサイトを作っています。
axiosでid一覧を取得した後に、一覧の中から10件の情報をさらに取得するものを作りたいです。
そこで、idを指定してjsonを取得するプログラムを関数にしたいと思ってるのですが、コードのコメントからsetDataまでを関数に置き換えると下記のエラーが出てしまいます。
Uncaught (in promise) TypeError: Cannot read properties of undefined (reading '0') at buttonClick
このエラーを回避するにはどうしたらいいのでしょうか。
js
1import React, { useState, useEffect } from 'react'; 2import ReactDOM from 'react-dom'; 3import axios from 'axios'; 4 5function App({ itemsPerPage }) { 6 const [idList, setId] = useState([]); 7 const [data, setData] = useState([]); 8 9 useEffect(async () => { 10 const result = await axios( 11 `idの一覧取得API`, 12 ); 13 setId(result) 14 15 //ここを無くしてbuttonClickの関数に置き換えたい 16 let newsList = []; 17 for(var i = 0; i < 10; i++) { 18 const response = await axios( 19 `idを指定してjson取得するAPI`, 20 ); 21 newsList.push(response.data); 22 } 23 setData(newsList) 24 25 26 }, []); 27 28 const buttonClick = async () => { 29 let newsList = []; 30 for(var i = 0; i < 10; i++) { 31 const response = await axios( 32 `idを指定してjson取得するAPI`, 33 ); 34 newsList.push(response.data); 35 } 36 setData(newsList); 37 };
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。