前提・実現したいこと
axiosを使用して非同期でデータを取ってきて、羅列したい
発生している問題・エラーメッセージ
TypeError: resources.map is not a function
該当のソースコード
ConnectingToAPIコンポーネント
js
1import React, { useState } from "react"; 2 3import { Button } from "../core/Button/Button"; 4import { Resources } from "../core/Resources/Resources"; 5import jsonplaceholder from "../../apis/jsonplaceholder"; 6 7export const ConnectingToApi = () => { 8 const [resources, setResources] = useState([]); 9 10 const getPosts = async () => { 11 try { 12 const posts = await jsonplaceholder.get("/posts"); 13 setResources(posts.data); 14 } catch (err) { 15 console.log(err); 16 } 17 }; 18 19 const getAlbums = async () => { 20 try { 21 const albums = await jsonplaceholder.get("/albums"); 22 setResources(albums.data); 23 } catch (err) { 24 console.log(err); 25 } 26 }; 27 28 return ( 29 <> 30 <Button onClick={getPosts} value="posts" /> 31 <Button onClick={getAlbums} value="albums" /> 32 <Resources resources={resources} /> 33 </> 34 ); 35}; 36
Resourcesコンポーネント
js
1import React from "react"; 2 3export const Resources = (resources) => { 4 console.log(resources); 5 return ( 6 <> 7 {resources.map((resource) => ( 8 <p key={resource.id}>{resource.title}</p> 9 ))} 10 </> 11 ); 12};
BUTTONコンポーネント
js
1import React from "react"; 2import styled, { css } from "styled-components"; 3 4export const Button = ({ onClick, value, isDisabled }) => { 5 return ( 6 <> 7 <StyledButton isDisabled={isDisabled} onClick={onClick}> 8 {value} 9 </StyledButton> 10 </> 11 ); 12}; 13 14const StyledButton = styled.button` 15 ${({ isDisabled }) => 16 isDisabled && 17 css` 18 opacity: 0.3; 19 pointer-events: none; 20 `} 21`; 22
試したこと
console.logでresoucesの内容を確認arrayになっている_proto_もあり。以下画像添付
ここにより詳細な情報を記載してください。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。