Notice
Recent Posts
Recent Comments
Link
«   2024/10   »
1 2 3 4 5
6 7 8 9 10 11 12
13 14 15 16 17 18 19
20 21 22 23 24 25 26
27 28 29 30 31
Tags
more
Archives
Today
Total
관리 메뉴

오늘도 코딩하나

[React] 일반적인 setState 사용 vs setState 콜백 함수 본문

React

[React] 일반적인 setState 사용 vs setState 콜백 함수

오늘도 코딩하나 2024. 8. 31. 17:02

1. 일반적인 setState 사용

 

  ▶ 단순 상태 업데이트

     - 상태가 직접적으로 업데이트되는 경우

     - 이전 상태에 의존하지 않고 상태를 완전히 새로 설정할 때

       ( 상태를 덮어쓰는 경우)

     - 단순 값 설정이 필요한 경우

     - 이전 상태와 무관한 로직으로 상태를 업데이트할 때

 

  ▶ 외부 데이터로 상태 설정

     - API 호출 결과를 기반으로 상태를 설정할 때

const handleCheckAll = () => {
	setCheckedAll([])
}

 ⇒ 이전 상태에 의존하지 않고 새 값을 설정

const handleCheck = (id) => {
  setCheckedItems((prev) =>
    prev.includes(id) ? prev.filter((itemId) => itemId !== id) : [...prev, id]
  );
};

 ⇒ 이 경우에는 'prev'를 이용해 이전 상태를 기반으로 업데이트를 하고 있지만,
      비동기적인 상태 관리가 필요하지 않음.

 

 

 

2. setState 콜백 함수

 

  ▶ 현재 상태 기반 업데이트

     - 현재 상태값을 기반으로 상태를 업데이트하는 경우

 

   동시 상태 업데이트 문제

     - 상태가 비동기적으로 여러 번 업데이트될 때

const handleUpdate = (id, key, event) => {
    let newItem = event.target.innerText;

    setTempData(prevData => prevData.map((item) =>
      item.id === id ? { ...item, [key]: newItem } : item
    ))
  }

 ⇒ 사용자가 입력 필드에서 데이터를 변경할 때마다 상태를 업데이트하며,

     이전 상태를 기반으로 비동기적으로 여러번 업데이트를 해야하기 때문에

     콜백 함수를 사용하여 현재 상태에 대한 안정적인 업데이트 가능