๐Ÿช„ ํ”„๋ก ํŠธ์—”๋“œ ๋ฉด์ ‘ ์งˆ๋ฌธ ์Šคํ„ฐ๋”” - 4ํŽธ. React์—์„œ memo๋กœ ์ตœ์ ํ™”ํ•˜๊ธฐ

MJยท2023๋…„ 1์›” 4์ผ
0
post-thumbnail

โœ”๏ธ memo()

๋ฆฌ์•กํŠธ๋Š” state๊ฐ€ ๋ณ€๊ฒฝ๋˜๋ฉด ํ•ด๋‹นํ•˜๋Š” ๋ชจ๋“  ์ปดํฌ๋„ŒํŠธ๋ฅผ ์žฌ๋ Œ๋”๋งํ•œ๋‹ค.
์ด๋•Œ ์žฌ๋žœ๋”๋งํ•ด์•ผํ•˜๋Š” ์ปดํฌ๋„ŒํŠธ๊ฐ€ ๋งŽ์„์ˆ˜๋ก ์‚ฌ์ดํŠธ๋Š” ๋ฒ„๋ฒ…์ผ ๊ฒƒ์ด๋‹ค.
์ด๋ฅผ ํ•ด๊ฒฐํ•˜๊ธฐ ์œ„ํ•ด memo()๋ฅผ ์‚ฌ์šฉํ•  ์ˆ˜ ์žˆ๋‹ค.

์˜ˆ์‹œ ์ฝ”๋“œ

  1. App์„ ๋ Œ๋”๋งํ•˜๋ฉด Btn ์ปดํฌ๋„ŒํŠธ๋ฅผ ๋ Œ๋”๋งํ•œ๋‹ค.
  2. Btn์ปดํฌ๋„ŒํŠธ๋Š” <div>์š”์†Œ๋ฅผ ๋ Œ๋”๋งํ•˜๊ธฐ์ „์— console.log์— ํ•ด๋‹นํ•˜๋Š” ๊ฐ’์„ ์ถœ๋ ฅํ•œ๋‹ค.

์ฒ˜์Œ ๋ Œ๋”๋ง๋œ console

function App() {
  const [value, setValue] = useState('Save changes');
  const changeValue = () => setValue('Revert Changes');
  return (
    <div className="App">
      <MemoBtn innerText={value} changeValue={changeValue} />
      <MemoBtn innerText="domado" />
    </div>
  );
}

function Btn({ innerText, changeValue }) {
  console.log(innerText, 'rendering');
  return (
    <button
      type="button"
      style={{
        backgroundColor: 'tomato',
        color: 'white',
        padding: '10px 20px',
        border: 0,
        borderRadius: 10,
      }}
      onClick={changeValue}
    >
      {innerText}
    </button>
  );
}
const MemoBtn = React.memo(Btn);

๋ฒ„ํŠผ์„ ๋ˆ„๋ฅธ ํ›„ ๋ Œ๋”๋ง๋œ console

โ— memo()๋ฅผ ์‚ฌ์šฉํ•˜๋ฉด state๊ฐ€ ๋ณ€ํ•œ ์ปดํฌ๋„ŒํŠธ๋งŒ ์žฌ๋žœ๋”๋ง ํ•˜๋ฉด์„œ ์ตœ์ ํ™” ์‹œํ‚ฌ ์ˆ˜ ์žˆ๋‹ค.โ—

๋งŒ์•ฝ memo๋ฅผ ์‚ฌ์šฉํ•˜์ง€ ์•Š์•˜๋”๋ผ๋ฉด?

โ—์œ„์™€ ๊ฐ™์ด state๊ฐ€ ๋ณ€๊ฒฝ๋˜์ง€ ์•Š์€ ์ปดํฌ๋„ŒํŠธ๋„ ์žฌ๋žœ๋”๋ง ๋œ๋‹คโ—

profile
A fancy web like a rose

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