react에서 state를 변경하는 함수는 비동기로 처리된다.
오래 걸리기 때문에 빨리 수행할 수 있는 것부터 먼저 처리하고
state변경함수를 처리한다.
      <input
        type="text"
        onChange={(e) => {
          setValue(e.target.value); // 비동기처리
          console.log(value); // 먼저 실행
        }}
      />
setValue 함수가 먼저지만 console.log()가 먼저 수행되기 때문에
첫 글자를 입력해도 value가 아직 변경되기도 전에 콘솔이 수행되어 콘솔창에는 아무것도 없는 빈 문자를 찍는다.
그 다음 글자부터 이전 상태를 콘솔에 찍는다.
이 현상을 해결하기 위해 useEffect hook을 사용한다.
 useEffect(() => {
    // state가 변경될 때 마다 실행할 함수
  }, []); // dependency array에 state 값을 입력 여러개 가능