Notice
Recent Posts
Recent Comments
Link
일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | ||||||
2 | 3 | 4 | 5 | 6 | 7 | 8 |
9 | 10 | 11 | 12 | 13 | 14 | 15 |
16 | 17 | 18 | 19 | 20 | 21 | 22 |
23 | 24 | 25 | 26 | 27 | 28 | 29 |
30 | 31 |
Tags
- js
- https://m.blog.naver.com/tt2t2am1118/221010125300
- prj
- addEventListener
- sql
- Import
- 참고블로그
- async
- promise
- callback
- 동기
- 게임
- mysql
- execCommand
- await
- db
- database
- webpack
- eport
- 혼프
- ajax
- setTimeout()
- json
- JS #프로젝트
- slow and steady
- Project
- Porject
- https://youtube.com/playlist?list=PLuHgQVnccGMA5836CvWfieEQy0T0ov6Jh&si=FTaYv8m21EhO-A2K
- object
- 비동기
Archives
- Today
- Total
C-log
⚛️Start! React : section13 - Custom Hooks 본문
728x90
우리가 전시간에 fetch를 내장한 useEffect를 이용했다. 이는 DayList컴포넌트와 Day컴포넌트에 모두 사용된다. 중첩되는 부분이고 이를 처리하기 위해서 우리들만의 Hook을 제작할 것이다. 아래 함수를 살펴보자.
import { useState, useEffect } from "react";
export default function useFetch(url) {
const [data, setData] = useState([]);
useEffect(() => {
fetch(url)
.then(res => {
return res.json();
})
.then(data => {
setData(data);
});
}, [url]);
return data;
}
useFetch의 매개변수를 url로 설정하고 우리가 원하는 API의 값을 가지고 와서 원하는 data를 return하는 방식이다. 그러면 해당 함수는 return한 값이 된다. 이를 적용한 Day.js와 DayList.js를 살펴보자.
* Day.js
import { useParams } from "react-router-dom";
import Word from "./Word";
import useFetch from "../Hooks/useFetch";
export default function Day() {
// const { day } = useParams();
const day = useParams().day;
const words = useFetch(`http://localhost:3001/words?day=${day}`)
return <>
<h2>Day {day}</h2>
<table>
<tbody>
{words.map(word => {
return (
<Word word={word} key={word.id}></Word>
)
})}
</tbody>
</table>
</>;
}
* DayList.js
import { Link } from "react-router-dom"
import useFetch from "../Hooks/useFetch";
export default function DayList() {
const days = useFetch('http://localhost:3001/days');
return (
<ul className="list_day">
{days.map(day => {
return (
<li key={day.id}>
<Link to={`/day/${day.day}`}> Day {day.day} </Link>
</li>
)
})}
</ul>
);
}
이번 수업은 useEffect와 fetch 그리고 url을 잘 이해했다면 쉽게 이해할 수 있을 것이다.
728x90
'⚛️React > ⚡ver.1' 카테고리의 다른 글
⚛️Start! React : section15 - POST,CREATE구현 (0) | 2024.01.22 |
---|---|
⚛️Start! React : section14 - PUT,DELETE구현 (0) | 2024.01.21 |
⚛️Start! React : section12 - useEffect()&fetch() (0) | 2024.01.19 |
⚛️Start! React : section11 - json-server,REST API&botton (0) | 2024.01.19 |
⚛️Start! React : section10 - Route (0) | 2024.01.18 |
Comments