728x90
1. 현재 값을 베이스로 계산을 해야하는 경우
const [cnt, setCnt] = React.useState(0);
const onClick = () => {
setCnt(cnt + 1);
위 코드의 경우 오류가 발생할 확률이 높다.
그래서 아래와 같이 setCnt에서 함수를 넣어 사용 할 수 있다.
const [cnt, setCnt] = React.useState(0);
const onClick = () => {
serCnt((current) => current + 1);
};
첫 번째 argument는 현재 값, 이 함수의 리턴 값이 새로운 값이 된다.
이 방법이 더 안전한 이유는 current가 확실히 현재 값(우리가 계산할 값)임을 보장하고 있기 때문이다.
그러면 예상치 못한 Update가 발생해도 혼선을 방지 해 준다.
예를들어서 1번과 같은 방식은 비동기적이라서 Rerendering을 할 때 한번에 값을 모아서 갱신하기 때문에 디버깅이 어려워진다.
즉, 1번과 같은 직접할당은 현재 state랑 관련이 없는 새로운 값을 새로운 state로 하고 싶을 때,
2번과 같은 함수를 항당하는 경우는 state에 변화를 주어서 새로운 state를 주고 싶은 경우에 사용하면 된다.
728x90
'React > 영화웹서비스만들기' 카테고리의 다른 글
input 과 State Functions으로 분 → 시간 단위 변환 앱 만들기 (2) (0) | 2024.04.09 |
---|---|
input 과 State Functions으로 분 → 시간 단위 변환 앱 만들기 (1) (0) | 2024.04.09 |
React.js가 useState로 원하는 Rerendering을 도와주는 방법 (0) | 2024.04.08 |
React.js의 state 사용하기 (0) | 2024.04.08 |
리액트를 활용하여 코드를 간단하게 만들기 (0) | 2024.04.03 |