[React] Queueing a Series of State Updates

clean·2023년 6월 26일
0

React

목록 보기
6/7
post-custom-banner
export default function Counter() {
  const [number, setNumber] = useState(0);

  return (
    <>
      <h1>{number}</h1>
      <button onClick={() => {
        setNumber(number + 1);
        setNumber(number + 1);
        setNumber(number + 1);
      }}>+3</button>
    </>
  )
}

이렇게 하면

setNumber(0+1);
setNumber(0+1);
setNumber(0+1);

위의 코드는 스냅샷(0)으로 state의 값을 변경하고, 모든 setState가 호출된 뒤에 렌더링(일괄 처리) 되므로 결국 버튼을 한번 누를 때마다 1씩 증가한다.

import { useState } from 'react';

export default function Counter() {
  const [number, setNumber] = useState(0);

  return (
    <>
      <h1>{number}</h1>
      <button onClick={() => {
        setNumber(n => n + 1);
        setNumber(n => n + 1);
        setNumber(n => n + 1);
      }}>+3</button>
    </>
  )
}

하지만 위의 코드로 짜면 3씩 증가한다.
n=> n+1 이 코드는 현재 state 값으로 계산이 되기 때문

profile
블로그 이전하려고 합니다! 👉 https://onfonf.tistory.com 🍀
post-custom-banner

0개의 댓글