프로젝트하면서 블로그 써야지,,,써야지.... 하고 주제만 적어놓고 이제야 씀ㅋㅋ 몰아작성하기...
React에서 상태를 관리할 때 토글 기능을 많이 쓴다.
드롭다운 메뉴를 열거나 닫는 기능을 만들 때, 상태를 true 또는 false로 토글하는 기능!!
난 게시판에서 정렬방법 선택할 때 토글기능을 썼음. 근데 난 처음에 단순하게
setFilterDropdown(!filterDropdown)
이렇게 작성했단말임...
근데 찾아보니까 보통
setFilterDropdown(prevState => !prevState)
이렇게 쓰더라고..??
그래서 이 두개가 뭐가 다르냐면
1. setFilterDropdown(!filterDropdown)
• 장점: 코드가 간단하고 이해하기도 쉬워. 딱히 복잡하게 생각 안 하고도 바로 쓸 수 있음
• 단점: 근데 React는 상태를 비동기적으로 업데이트해서 상태가 여러 번 연속으로 바뀔 때 꼬일 가능성이 있음.... 특히 버튼을 빠르게 여러 번 누르면 원하는 대로 동작 안 할 가능성이 높아짐..!!
2. setFilterDropdown(prevState => !prevState) ✅
• 장점: React의 비동기 특성 때문에 생기는 문제를 피할 수 있음! 언제 상태가 바뀌든 항상 최신 상태값을 기반으로 안전하게 처리가능
• 단점: 코드가 살짝 더 길어진다..?
비동기 상태 업데이트의 문제
React에서는 상태가 바로바로 업데이트되는 것처럼 보이지만, 실제로는 일정 시간 뒤에 처리되기도 함. 그래서 버튼을 여러 번 클릭할 때마다 상태값이 최신 상태를 제대로 반영하지 않으면, 드롭다운이 이상하게 열리고 닫힐 수 있음. 이런 경우에는 예상치 못한 버그가 발생할 수 있음,,,,
함수형 업데이트의 장점
함수형 업데이트 방식은 이전 상태를 기준으로 새로운 상태를 계산하기 때문에, 상태가 연속적으로 변경돼도 잘 작동됨. 특히 여러 비동기 작업이 동시에 일어나는 복잡한 상황에서도 매우 유용하다고....
암튼 앞으로는 prevState => !prevState 이렇게 작성하긔ㅋㅋ
'[ PROJECT ] > PetHarmony' 카테고리의 다른 글
[🚨 TroubleShooting] 무한 스크롤 데이터 중복 요청 (0) | 2024.09.14 |
---|---|
[🚨 TroubleShooting] N+1이 뭔데.... (1) | 2024.09.13 |