useState prev

sjy·2022년 4월 2일
0

코딩공부

목록 보기
6/49

React-hook 중 하나인 useState를 하나의 함수에서 여러번 사용할 경우 원하는대로 결과가 안나오는 문제가 생길 수 있다.

아래는 카운트 값에 1,3,5,7을 차례대로 올려 결론적으로 버튼을 한 번 누르면 16이 오르길 바라고 만든 코드이다.

import { useState } from "react";
export default function StatePrevPage() {
  const [count, setCount] = useState(0);
  const onClickCount = () => {
    setCount(count + 1);
    setCount(count + 3);
    setCount(count + 5);
    setCount(count + 7);
  };
  return (
    <div>
      <div>Count:{count}</div>
      <button onClick={onClickCount}>Count Up</button>
    </div>
  );
}

하지만 실제로 작동을 시켜보면 16이 아니라 7이 오른다.
받아오는 count 값이 +1,+3,+5가 된 값이 아니라 처음상태인 0에서 받아오기 때문에 벌어지는 일이다.
그래서 이를 방지하기 위해 prev라는 기능을 사용한다.

아래와 같이 코드를 사용하면 16이 정상적으로 올라가는 것을 확인할 수 있다.

import { useState } from "react";
export default function StatePrevPage() {
  const [count, setCount] = useState(0);
  const onClickCount = () => {
    setCount((prev) => prev + 1);
    setCount((prev) => prev + 1);
    setCount((prev) => prev + 1);
    setCount((prev) => prev + 1);
    setCount((prev) => prev + 1);
  };
  return (
    <div>
      <div>Count:{count}</div>
      <button onClick={onClickCount}>Count Up</button>
    </div>
  );
}
profile
수학과 코딩

0개의 댓글