import React, {useEffect, useState} from 'react'
import axios from 'axios'
const Books = () => {
const [books, setBooks] = useState(null);
const [error, setError] = useState(null);
const [loading, setLoading] = useState(null);
useEffect(() => {
const booksLoding = async () => {
try {
setError(null);
setBooks(null);
setLoading(true);
const response = await axios.get("api/test");
setBooks([response])
// const asd = books.map(book => {return <li key={book.id}>{book}</li>})
// const asd = books.map(book => <li key={book.id}>{book}</li>)
// if(books != 'undefined' && books != null) {
// const booksList = books.map((book, index)=> {
// <li key={index}>{book}</li>
// })}
} catch (e) {
setError(e);
}
setLoading(false);
}
booksLoding()
}, []);
if (loading) return <div>로딩중..</div>;
if (error) return <div>에러가 발생했습니다</div>;
if (!books) return null;
// const booksList = books.map((book) => <li>{book}</li>);
const click = () => {
// axios.get("api/test").then((res) => setBooks(res.data));
console.dir(books)
console.log(books)
// const asd = books.map(book => {return <li key={book.id}>{book}</li>})
// console.log(asd)
// console.log(booksList)
}
// const booksList = books && books.product.map(book => booksList.push(book));
return (
<>
<div>
{/* <button onClick={click}>asd</button> */}
<ul>
{books ? books.map(book => {<li key={book.id}>{book}</li>}) : "bay"}
</ul>
</div>
</>
);
}
export default Books
왜 맵으로 열었는데 안나오져 ㅠㅠ
map callback 에서 return을 안해서
li 태그 좌우로 중괄호를 빼던지 li 태그 앞 중괄호 사이에 return을 쓰든지
근데 리턴으로 보내면 Objects are not valid as a React child (found: object with keys {data, status, statusText, headers, config, request}). If you meant to render a collection of children, use an array instead. 이 오류가 나오는데 그 이유는 혹시 알 수 있을까요 구글링해봐도 상위컴포넌트 > 하위컴포넌트 때문이라는 얘기밖에 없는데 전 하나의 컴포넌트에서 처리하는중인거 같은데 ㅠㅠ
api/test 리턴값이 뭐임?
setBooks([response]); 말고 setBooks(response.data); 해보실?
{"porducts":[{"id":2,"bookname":"광개토대왕","writer":"장문식 지음;하재련 그림","publishingcompany":"웅진출판","number":"990.8/웅247;1","ISBN":"8901001675","chdtjaud":"웅진위인전기 한국편;1","qnsfbrlgh":"990.8","isDeleted":0,"wjwkrlgh":"웅247"},{"id":3,"bookname":"원효","writer":"정호승 지음;전승규 그림","publishingcompany":"웅진출판","number":"990.8/웅247;2","ISBN":"8901001683","chdtjaud":"웅진위인전기 한국편;2","qnsfbrlgh":"990.8","isDeleted":0,"wjwk
이런식으로 2000줄정도인데
근데 그렇게 넣으면 배열형태가 아니라고 map을 못쓰더라구요 다시 해볼게요
안에 products 배열이 필요하면거면 setBooks(response.data.products);
오 그렇게 하니까 저 오류는 없어졌는데 그대로 맵이 안펼쳐지네요 ㅠㅠ
book 각각이 object 잖아 li 안에 object를 넣으면 표시해줄 수 없어
아하 그런게있다니 감사합니다 !!
https://ibb.co/9b06cf5
파이팅
..와 정말 감사합니다 ....