
์ํ๊ฐ์ด ๋ฐ๋์์ ๋ ๋์ํ๋ ํจ์๋ฅผ ์์ฑ
์ํ๊ฐ์ด ๋ณ๊ฒฝ๋์ ๋ค์ ๋ ๋๋ง๋์์ ๋ ํธ์ถ
๊ทธ๋ฌ๋ ์ํ์ง ์์ ์ํฉ์์๋ ํธ์ถ๋ ์ ์์-> ๋ถํ์ํ ์คํ
๋ฐ๋ผ์ ๋๋ฒ์งธ ๋งค๊ฐ๋ณ์ [๋ณ๊ฒฝ๋๋ ๊ฐ] ์ด ๋ณ๊ฒฝ๋๋ ๊ฒฝ์ฐ์๋ง ํจ์๊ฐ ์คํ๋จ.
useEffect(ํจ์, [๋ณ๊ฒฝ๋๋ ๊ฐ]);
์ต์ด์ ํ ๋ฒ๋ง ํธ์ถ -> useEffect(ํจ์, [])
๋น๋ฐฐ์ด! -> ๋ ๋๋ง ์งํ ํ๋ฒ๋ง ํธ์ถ
const [days, setDays] = useState([]);
useEffect(() => {
fetch("http://localhost:3001/days").then((res) => {
return res.json();
})
.then((data) => {
setDays(data);
});
}, []);
- API ๋น๋๊ธฐ ํต์ =
fetch('api๊ฒฝ๋ก')์ด์ฉ.then์ ์ด์ฉํด์res(response).json์ ํตํด returnํด์ค- ์ด ๋, response๋ http ์๋ต์ด๊ณ ์ค์ json์ ์๋
.then์ ํตํดdata๋ฅผ ๋ฐ์์ setDays๋ฅผ data๋ก ํด์ค- useEffect()์ ๋น๋ฐฐ์ด์ ๋ฃ์ด ์ฃผ์ด์ผ ํ ๋ฒ๋ง ํธ์ถ๋จ..! ์ ๊ทธ๋ฌ๋ฉด terminal ๋๋ฆฌ..
import dummy from "../db/data.json";
import Word from "./Word";
import { useParams } from "react-router-dom";
import { useEffect, useState } from "react";
export default function Day() {
const { day } = useParams();
// const wordList = dummy.words.filter((word) => word.day === Number(day));
const [words, setWords] = useState([]);
useEffect(() => {
fetch(`http://localhost:3001/words?day=&{day}`)
.then((res) => {
return res.json();
})
.then((data) => {
setWords(data);
});
}, [day]);
return (
<>
<h2>Day {day}</h2>
<table>
<tbody>
{words.map((word) => (
<Word word={word} key={word.id} />
))}
</tbody>
</table>
</>
);
}
์ด ๋ useEffect๋ถ๋ถ์์,
http://localhost:3001/words?day=&{day}
const {day} = useParam()์ ์ด์ฉํด์ ์ฃผ์์ฐฝ์ ์๋ ๋ฌธ์์ด์ด ๋ค์ด์ค๋ ๊ฒ
์ด ๋ useEffect๋ด๋ถ์์ day์ ๊ฐ์ด ํน์ ๊ฐ์ ์ฌ์ฉํ๋ฉด ์์กด์ฑ ๋ฐฐ์ด์ ์ ๋ ฅํด์ผ ํจ. ์์กด์ฑ ๋ฐฐ์ด์ด ๋ฐฐ์ด์ด๋ฉด day๊ฐ ๋ณ๊ฒฝ๋์ด๋ ์๋ก์ด ๊ฐ์ ๊ฐ์ ธ์ฌ ์ ์์!
(ํ๋ฒ๋ง ๋ ๋๋ง๋๊ธฐ ๋๋ฌธ)
๋ฐ๋ผ์ [day]๋ก ๋ฃ์ด์ฃผ๊ธฐ!
const [days, setDays] = useState([]);
useEffect(() => {
fetch("http://localhost:3001/days").then((res) => {
return res.json();
})
.then((data) => {
setDays(data);
});
}, []);
const [words, setWords] = useState([]);
useEffect(() => {
fetch(`http://localhost:3001/words?day=&{day}`)
.then((res) => {
return res.json();
})
.then((data) => {
setDays(data);
});
}, [day]);