react์์ useEffect๋ฅผ ์ฌ์ฉํ์ฌ ํด๋น ์ปดํฌ๋ํธ๊ฐ ๋ ๋๋ง ๋ ๋, ํ์ํ ํจ์๋ฅผ ์ฆ๊ฐ ์คํํ๊ฒ ๋๋ค. ๋๊ฐ๋ก ๋ฐ์ดํฐ๋ฅผ ๋ฐ์์ ํ์ฉํ ๋ ์ฌ์ฉํ๋ ๊ฒฝ์ฐ๊ฐ ๋ง๋ค.
์ต๊ทผ NextJS ํ๋ก์ ํธ๋ฅผ ์งํํ๋ฉด์ ํด๋น ๋ถ๋ถ์ ์ง๋ฉดํ๊ฒ ๋๋ฉด์ ๊ธฐ์กด react์์ ์ฒ๋ฆฌํ๋ ๋ฐฉ๋ฒ๊ณผ๋ ๋ฌ๋ผ ์ด๋ฒ ํฌ์คํธ๋ฅผ ์ฐ๊ฒ ๋๋ค.
ํ๋ก ํธ์๋์์๋ ๋ฐ์ดํฐ๋ฅผ ์ปดํฌ๋ํธ์ ์ฐ๊ด์ง์ด ๋ค๋ฃจ๊ฒ ๋๋๋ฐ, ์ด ๋ ๋๋ง์ ํ์๊ฐ ์ฌ์ฉ์์๊ฒ ์์ด ๊ต์ฅํ ์ค์ํ๋ค๊ณ ์๊ฐํ๋ ํธ์ด๋ค.
๊ฐ๋จํ๊ฒ ์ฝ๋๋ฅผ ์ง๋ดค๋ค.
useEffect(() => {
const result = async () => {
const data = await axios.get<isFood>("http://localhost:9000/stores");
console.log(data);
};
result();
}, []);
useEffect ํน, ๋ถํ์ํ ๋ ๋๋ง 2๋ฒ... ๋ฌผ๋ก ์ด๊ฒ์ react ํ๋ก์ ํธ ๋ด์์ strictMode๋ฅผ ๋๋ฉด ํด๊ฒฐ์ด ๋์์๋ค.
ํ์ง๋ง ์ด ๋ถ๋ถ์ ๊ธฐ์กด์ ํด๊ฒฐํ ์ ์์๋ index.tsx์์ ์ฐพ์๋ณผ ์ ์์๋ค.
Why? Next์์๋ next.config.js
์ผ๋ก ๊ฑฐ์ ์ ์ฎ๊ฒผ๊ธฐ ๋๋ฌธ์ด๋ค. ์ฌ๊ธฐ์ index.tsx๋ ๋ณดํต ๋ฉ์ธํ์ด์ง๋ฅผ ์์ฑํ ๋ ์ฌ์ฉ๋๊ธฐ์ ์ด ๊ณณ์์ <React.StrictMode>
๋ฅผ ์ ๊ฑฐํ ์ ์์๋ค. ์ ์๋น์ด์ ์จ์์ง๋ ์๋ค..!
<React.StrictMode>
<div>
<ComponentOne />
<ComponentTwo />
</div>
</React.StrictMode>
/** @type {import('next').NextConfig} */
const nextConfig = {
reactStrictMode: true,
};
module.exports = nextConfig;
์๋ฌด๊ฒ๋ ๊ฑด๋ค์ด์ง ์์ next.config.js
.
<React.StrictMode>
ํ๊ทธ๋ ์์ง๋ง ๋๊ฒ ๋น์ทํ ์ต์
์ด ์์ง ์๋๊ฐ. ๋ฐ๋ก reactStrictMode: true
.
์ด๊ฒ์ true -> false
๋ก ๋ฐ๊ฟ๋ณด๋ฉด ํด๊ฒฐ์ด ๋๋ค.
! ๋ค๋ง ์ค์ ํ์ผ์ ๋ฐ๋ก ์ ์ฉ์ด ๋์ง ์๊ธฐ์ ์๋ฒ๋ฅผ ๋๊ณ ๋ค์ ์ผ์ผํ๋ค. next๋ ์น์ ํ๊ฒ ํฐ๋ฏธ๋์์ ๋ณ๊ฒฝ์ ์ ์ ์ฉํ๋ ค๋ฉด ์ฌ์์ํ๋ผ๋ ๊ฒ๋ ์๋ ค์ค๋ค.
์๋์ ๋ธ๋ก๊ทธ์์ ์ ๋ณด๋ฅผ ์ป๊ณ ๊ธฐ์ ํ์์ต๋๋ค.
https://lemontia.tistory.com/1070