๐ŸŽ„ ์„ฑ์žฅ์ผ์ง€ 5.0

์ฑ… ํ–‰๋ณตํ•œ ์ด๊ธฐ์ฃผ์˜์ž(์›จ์ธ ๋‹ค์ด์–ด)์˜ ๋‚ด์šฉ์— ์ž๊ทน๋ฐ›์•„ ์‹œ์ž‘ํ•˜๋Š” ์†Œ๋ฐ•ํ•œ ์„ฑ์žฅ๊ธฐ๋ก

์‚ด์•„์žˆ๋Š” ๊ฝƒ๊ณผ ์ฃฝ์€ ๊ฝƒ์€ ์–ด๋–ป๊ฒŒ ๊ตฌ๋ณ„ํ•˜๋Š”๊ฐ€?
์„ฑ์žฅํ•˜๊ณ  ์žˆ๋Š” ๊ฒƒ์ด ์‚ด์•„ ์žˆ๋Š” ๊ฒƒ์ด๋‹ค.
์ƒ๋ช…์˜ ์œ ์ผํ•œ ์ฆ๊ฑฐ๋Š” ์„ฑ์žฅ์ด๋‹ค!

๐ŸŒพ (4.0)ํ•™์Šต ํ‚ค์›Œ๋“œ์—์„œ ์ตœ๋Œ€ํ•œ ๊ฐ„๋‹จํ•œ ์ •๋ณด ์ œ๊ณต, ๊ณ ๋ฏผ์—์„œ ๋‚ด ๊ฒฝํ—˜์„ ์ž์„ธํžˆ ์ ์ž!
๐ŸฅŠ (5.0)ํ•™์Šต ํ‚ค์›Œ๋“œ๋Š” ํ•œ์ค„์˜ ํ•ต์‹ฌ์œผ๋กœ๋งŒ ์ •๋ฆฌ, ์„ฑ๊ณต/์‹คํŒจ ์ผ์ง€ ์ž‘์„ฑํ•˜๊ธฐ! ์ด ๋•Œ, ์‹คํŒจ์˜ ๊ฒฝํ—˜์€ ์ž์„ธํžˆ ์ ๊ธฐ!

๐Ÿ”‘ ์˜ค๋Š˜์˜ ํ•™์Šต ํ‚ค์›Œ๋“œ

strict mode ์ผœ๋‘๊ณ  fetching data

strict mode๋ฅผ ๊ฐ„๋‹จํžˆ ์„ค๋ช…ํ•˜๋ฉด ์ปดํฌ๋„ŒํŠธ๋ฅผ 2๋ฒˆ ๋ Œ๋”๋งํ•˜๊ฒŒ ํ•˜๋Š” ๊ฒƒ์ด๋‹ค. ์ด๋ฅผ ํ†ตํ•ด ๋ Œ๋”๋ง ์ค‘์— ๋ฐœ์ƒํ•˜๋Š” ์—ฌ๋Ÿฌ side effect๋ฅผ ์ฐพ์•„๋‚ผ ์ˆ˜ ์žˆ๋‹ค. ๋‹ค๋งŒ, ์ผ๋ฐ˜์ ์ธ ๊ฐœ๋ฐœ ์ค‘์— ๋ Œ๋”๋ง์ด 2๋ฒˆ ๋˜๊ธฐ์— ๋‹ค์†Œ ๊ท€์ฐฎ์€ ๋ฌธ์ œ๊ฐ€ ๋ฐœ์ƒํ•œ๋‹ค. ์˜ˆ๋ฅผ ๋“ค๋ฉด, data๋ฅผ ์š”์ฒญํ•ด์„œ ๋ฐ›์•„์˜จ ํ›„, ์ด๋ฅผ state๋กœ ๊ด€๋ฆฌํ•  ๋•Œ์ด๋‹ค. ํ•ด๋‹น ์ปดํฌ๋„ŒํŠธ๊ฐ€ 2๋ฒˆ ๋ Œ๋”๋ง๋˜๋ฉด์„œ ์š”์ฒญ์„ 2๋ฒˆ ๋ณด๋‚ด๊ฒŒ ๋˜๊ณ  ์ž์—ฐ์Šค๋Ÿฝ๊ฒŒ state๋Š” 2๋ฒˆ์˜ ๋ฐ์ดํ„ฐ๊ฐ€ ๋ฐ˜์˜๋œ๋‹ค. ํ•ด์„œ ๊ณต์‹๋ฌธ์„œ๋ฅผ ์ฐธ๊ณ ํ•˜์—ฌ ์ด๋ฅผ ํ•ด๊ฒฐํ•ด๋ณด์•˜๋‹ค. ignore๋ผ๋Š” flag ๋ณ€์ˆ˜๋ฅผ ๋‘์–ด์„œ ๋ Œ๋”๋ง ์ค‘์—๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๋„๋ก ํ•˜์˜€๋‹ค.

// ๊ทธ๋ƒฅ ์š”์ฒญ ๋ณด๋‚ด๋Š” ๊ฒฝ์šฐ
const [data, setData] = useState(null);

useEffect(() => {
  fetch('https://api.example.com/items')
    .then(res => res.json())
    .then(data => setData(data));
}, []);
// ignore ๋ณ€์ˆ˜๋ฅผ ํ†ตํ•ด ๋ Œ๋”๋ง ์ค‘์—๋Š” ์š”์ฒญ์„ ๋ณด๋‚ด์ง€ ์•Š๋Š”๋‹ค.
const [data, setData] = useState(null);
let ignore = false;

useEffect(() => {
  const startFetching = async () => {
    const res = await fetch('https://api.example.com/items');
    const data = await res.json();
    if (!ignore) setData(data);
  };

  startFetching();
  
  return () => { 
    ignore = true;
  };
}, []);

๐Ÿฉน๏ธ ์˜ค๋Š˜์˜ ์‹คํŒจ

  • api ์—ฐ๋™ ์‹คํŒจ: ์šฐ๋ฆฌ ๋ฐฑ์—”๋“œ ์„œ๋ฒ„์™€ api๋ฅผ ์—ฐ๋™ํ•˜๊ณ  ์‹ถ์€๋ฐ, ์ƒ๊ฐ๋ณด๋‹ค ์‰ฝ์ง€ ์•Š๋‹ค. ๊ฐ™์ด ๋ช…์„ธ๋ฅผ ์ž‘์„ฑํ•ด๋„ ๊ฐœ๋ฐœ ์‹œ์—๋Š” ๋งŽ์€ ๋ถ€๋ถ„๋“ค์ด ์ˆ˜์ •๋˜๊ณ  ๋ฐ”๋€” ์ˆ˜ ์žˆ๋‹ค๋Š” ๊ฒƒ์„ ๋ฐฐ์šธ ์ˆ˜ ์žˆ์—ˆ๋‹ค.

๐Ÿ– ์˜ค๋Š˜์˜ ์„ฑ๊ณต

  • ์ƒํ’ˆ ์ƒ์„ธ ํŽ˜์ด์ง€ ๊ตฌํ˜„!

๐Ÿ“ ์š”์•ฝ ๋ฐ ํ•˜๋ฃจ ๊ฐ„๋‹จ ํšŒ๊ณ 

์•„๊ณ โ€ฆ ์˜ค๋Š˜์€ ๊ฐœ๋ฐœ๋„ ๊ฐœ๋ฐœ์ด์ง€๋งŒ ํฌ๋กฑ๊ณผ ๋ฉด๋‹ด์ด ์žˆ๋˜ ๋‚ ์ด์—ˆ๋‹ค. ์•ž์œผ๋กœ์˜ ๊ณ„ํš๊ณผ ๊ณ ๋ฏผ ๊ทธ๋ฆฌ๊ณ  ์ทจ์—…๊ณผ ๊ด€๋ จ๋œ ์ด์•ผ๊ธฐ๋ฅผ ๋งŽ์ด ๋‚˜๋ˆ„์—ˆ๋‹ค. ํฌ๋กฑ ์ •๋„์˜ ์‹œ๋‹ˆ์–ด ๊ฐœ๋ฐœ์ž์™€ 1๋Œ€1๋กœ ๊ฐ€๋ณ๊ฒŒ ๋“ฑ์‚ฐํ•˜๋ฉด์„œ ๋Œ€ํ™”๋ฅผ ํ•  ์ˆ˜ ์žˆ๋‹ค๋‹ˆโ€ฆ ์ƒˆ์‚ผ์Šค๋ ˆ ์ •๋ง ์†Œ์ค‘ํ•œ ์‹œ๊ฐ„์ด๋ผ๊ณ  ๋Š๊ผˆ๋‹ค.

์ฐธ๊ณ