์ฐธ๊ณ ์ž๋ฃŒ: https://frontendmasters.com/blog/react-internals-which-useeffect-runs-first/

๋ถ€๋ชจ-์ž์‹ ๊ตฌ์กฐ์—์„œ useEffect๋Š” ๋ˆ„๊ตฌ ๋จผ์ € ์‹คํ–‰๋ ๊นŒ?

์˜ˆ์ƒ๊ณผ ๋‹ฌ๋ฆฌ, ์ž์‹ ์ปดํฌ๋„ŒํŠธ์˜ useEffect๊ฐ€ ๋จผ์ € ์‹คํ–‰๋œ๋‹ค.

์™œ ๊ทธ๋Ÿฐ ๊ฑธ๊นŒ?


๐Ÿงช ์˜ˆ์ œ ์ฝ”๋“œ

function Parent() {
  useEffect(() => {
    console.log('Parent effect');
  }, []);

  return <Child />;
}

function Child() {
  useEffect(() => {
    console.log('Child effect');
  }, []);

  return <div />;
}

function App() {
  return <Parent />;
}

โœ… ์‹ค์ œ ์ถœ๋ ฅ ๊ฒฐ๊ณผ:

Child effect
Parent effect

๐Ÿ“ฆ React ๋‚ด๋ถ€์—์„œ ๋ฌด์Šจ ์ผ์ด ์ผ์–ด๋‚˜๊ณ  ์žˆ์„๊นŒ?

React๋Š” ๋ Œ๋”๋ง๊ณผ effect ์‹คํ–‰์„ ๋‹ค์Œ๊ณผ ๊ฐ™์€ 3๋‹จ๊ณ„๋กœ ๋‚˜๋ˆ  ์ฒ˜๋ฆฌํ•œ๋‹ค:

1. Render Phase

2. Commit Phase

3. Effect Phase