useCallback

๊น€๋‚จ๊ฒฝยท2023๋…„ 1์›” 20์ผ

react

๋ชฉ๋ก ๋ณด๊ธฐ
27/37

์˜๋ฏธ

๐Ÿ’ก ํ•จ์ˆ˜์˜ ์žฌ์‚ฌ์šฉ์„ ์œ„ํ•ด ์‚ฌ์šฉํ•˜๋Š” Hook
๐Ÿ’ก useCallback์€ ํ•จ์ˆ˜๋ฅผ ํ˜ธ์ถœ์„ ํ•˜์ง€ ์•Š๋Š” Hook์ด ์•„๋‹ˆ๋ผ, ๊ทธ์ € ๋ฉ”๋ชจ๋ฆฌ ์–ด๋”˜๊ฐ€์— ํ•จ์ˆ˜๋ฅผ ๊บผ๋‚ด์„œ ํ˜ธ์ถœํ•˜๋Š” Hook
-ํ•จ์ˆ˜๋ฅผ ๋ฐ˜๋ณตํ•ด์„œ ์ƒ์„ฑํ•˜์ง€ ์•Š๊ธฐ ์œ„ํ•ด์„œ ์‚ฌ์šฉํ•˜๋Š” ๊ฒƒ์ด ์•„๋‹˜

์ฐธ์กฐ๋™๋“ฑ์„ฑ

๐Ÿ’ก useCallback์€ ์ฐธ์กฐ ๋™๋“ฑ์„ฑ์— ์˜์กด

์ฐธ์กฐ๋™๋“ฑ์„ฑ
React๋Š” ๋ฆฌ๋ Œ๋”๋ง ์‹œ ํ•จ์ˆ˜๋ฅผ ์ƒˆ๋กœ ๋งŒ๋“ค์–ด์„œ ํ˜ธ์ถœ
๊ธฐ์กด์˜ ํ•จ์ˆ˜์™€ ๊ฐ™์ง€ ์•Š์Œ(๊ฐ™์€ ์ฃผ์†Œ๋ฅผ ๊ณต์œ ํ•˜์ง€ ์•Š์Œ)

โœ… React ์ปดํฌ๋„ŒํŠธ ํ•จ์ˆ˜ ๋‚ด์—์„œ ๋‹ค๋ฅธ ํ•จ์ˆ˜์˜ ์ธ์ž๋กœ ๋„˜๊ธฐ๊ฑฐ๋‚˜ ์ž์‹ ์ปดํฌ๋„ŒํŠธ์˜ prop์œผ๋กœ ๋„˜๊ธธ ๋•Œ ์‚ฌ์šฉ

์ ์šฉ

//App.js
import { useState, useCallback } from "react";
import List from "./List";

export default function App() {
	const [input, setInput] = useState(1);
  	
    const handleChange = (event) => {
      if (Number(event.target.value)) {
        setInput(Number(event.target.value));
      }
    };
  
    const getItems = useCallback(() => {
    	return [input + 10, input + 100];
  	}, [input]);
  
  	return (
    <>
      <div className="wall-paper">
        <input
          type="number"
          value={input}
          onChange={handleChange}
        />
        <List getItems={getItems} />
      </div>
    </>
  );
}
//List.js
import { useState, useEffect } from "react";

function List({ getItems }) {
  const [items, setItems] = useState([]);

  useEffect(() => {
    setItems(getItems());
  }, [getItems]);

  return (
    <div>
      {items.map((item) => (
        <div key={item}>{item}</div>
      ))}
    </div>
  );
}

export default List;

์ฐธ๊ณ 

useCallback ์‚ฌ์šฉ ๊ฐ€์ด๋“œ

profile
๊ธฐ๋ณธ์— ์ถฉ์‹คํ•˜๋ฉฐ ์•ž์œผ๋กœ ๋ฐœ์ „ํ•˜๋Š”

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