프론트엔드/react

[Hook] useMemo

첸첸 2022. 3. 19. 22:51
728x90
import logo from './logo.svg';
import './App.css';
import { useState, useMemo } from 'react';

function App() {
  const [list, setList] = useState([1, 2, 3, 4]);
  const [str, setStr] = useState('합계');
  const getAddResult = () => {
    let sum = 0;
    list.forEach((i) => (sum = sum + i));
    console.log(sum);
    return sum;
  };

  //list가 변경 되었을 때만 getAddResult()가 실행 될 수 있게 기억
  const addResult = useMemo(() => getAddResult(), [list]);

  return (
    <div>
      <button
        onClick={() => {
          setList([...list, 1]);
        }}
      >
        add
      </button>
      <button
        onClick={() => {
          setStr('sum');
        }}
      >
        문자변경
      </button>
      {list.map((i) => (
        <h1>{i}</h1>
      ))}
      <div>
        {str} : {addResult}
      </div>
    </div>
  );
}

export default App;