๐Ÿ“† 23.02.16 - NextJS ์—์„œ ๋ฐœ์ƒ๋˜๋Š” useEffect ์˜ ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง ์ค„์ด๊ธฐ

๋ฒ„๋“คยท2023๋…„ 2์›” 16์ผ
0

โœจToday I Learn (TIL)

๋ชฉ๋ก ๋ณด๊ธฐ
26/57

useEffect ์—์„œ ๋ฐœ์ƒํ•˜๋Š” ๋ถˆํ•„์š”ํ•œ ๋ Œ๋”๋ง

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>

next.config.js

/** @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

profile
ํƒœ์–ด๋‚œ ๊น€์— ๋งŽ์€ ๊ฒฝํ—˜์„ ํ•˜๋ ค๊ณ  ์•„๋“ฑ๋ฐ”๋“ฑ ์• ์“ฐ๋Š” ํ”„๋ก ํŠธ์—”๋“œ ๊ฐœ๋ฐœ์ž

0๊ฐœ์˜ ๋Œ“๊ธ€