티스토리 뷰
개요
useEffect 를 이용하여 컴포넌트 Mount 시점에 API의 결과값을 초기값으로 활용해보자 !!
App.js
import { useEffect, useRef, useState } from "react";
import "./styles.css";
export default function App() {
const [data, setData] = useState([]);
const dataId = useRef(0);
const getData = async () => {
const res = await fetch(
"https://jsonplaceholder.typicode.com/comments"
).then((res) => {
return res.json();
});
const initData = res.slice(0, 20).map((it) => {
return {
author: it.email,
content: it.body,
emotion: Math.floor(Math.random() * 5) + 1,
created_date: new Date().getTime(),
id: dataId.current++
};
});
setData(initData);
};
useEffect(() => {
getData();
console.log(data);
}, []);
//
return (
<div className="App">
<div>
{data.map((it) => {
return (
<div
style={{
border: "solid black 1px",
marginBottom: "10px"
}}
>
<span>작성자: {it.author}</span>
<span>내용: {it.content}</span>
<span>감정: {it.emotion}</span>
<span>작성일: {it.created_date}</span>
<span>id: {it.id}</span>
</div>
);
})}
</div>
</div>
);
}
1. State 초기화 (data, dataId)
-> data 는 api 호출을 통한 데이터들 초기화 해줄 state, dataId는 data Id값 초기화 해줄 state
2. getData 함수 초기화
-> fetch 메소드를 통해 jsonplaceholder 에서 무료로 제공하는 API 데이터를 initData 함수를 통해 가공 하여 setData 함수를 통해 data(state) 값을 초기화 해준다.
3. getData 호출
-> useEffect 를 사용하여 컴포넌트가 Mount 되는 시점에 getData를 호출하여 data State 값을 초기화 해준다.
참고
https://espania.tistory.com/353
[React] 기본 / Life Cycle / Hooks
Life Cycle (생애주기) 인간 세계에서의 생애 주기란 시간의 흐름에 따라 변화해가는 개인 생애의 일정한 단계별 과정을 말한다. 기본적으로 역량의 변화 발전에 따라 영유아기, 아동기, 청소년기,
espania.tistory.com
[javascript] API 호출/ fetch
API 웹상 에서 데이터의 흐름은 레스토랑에서 손님 - 웨이터 - 냉장고 의 상호작용 관계를 통해 이해 할 수 있다. 1. 손님이 웨이터에게 주문을 한다. -> Browser(브라우저)가 Server(서버) 에게 Request(
espania.tistory.com
https://jsonplaceholder.typicode.com/
JSONPlaceholder - Free Fake REST API
{JSON} Placeholder Free fake API for testing and prototyping. Powered by JSON Server + LowDB. Tested with XV. As of Oct 2021, serving ~1.7 billion requests each month.
jsonplaceholder.typicode.com
https://codesandbox.io/s/agitated-heyrovsky-indth1?file=/src/App.js%E2%80%8
'React' 카테고리의 다른 글
| [React] 최적화 / 함수 재사용 / memoization / useMemo (0) | 2022.05.08 |
|---|---|
| [React] 최적화 / 컴포넌트 재사용 / React.memo (0) | 2022.05.02 |
| [React] 실습 / 데이터 수정 / map (0) | 2022.04.29 |
| [React] 실습 / 데이터 삭제 / filter (0) | 2022.04.29 |
| [React] 실습 / 데이터 추가 / state 끌어올리기 (0) | 2022.04.29 |