useState Hook의 setState에는 콜백함수가 없다!

지금까지 setState의 두 번째 파라메터로 콜백함수를 넣어 동기실행을 할 수 있다고 알고 있었는데
이는 클래스형 컴포넌트의 setState에만 존재한다.

즉 다음과 같은 실행은 불가능하다.

1
2
3
4
5
const [state, setState] = useState(0);

setState(1, () => {
return console.log("hi");
});

하지만 useEffect를 사용하여 다음과 같은 방법으로 대체할 수 있다.
useEffect의 의존성 배열에 state를 추가하여 실행하는 방법이다.

1
2
3
4
5
6
7
const [state, setState] = useState(0);

setState(1);

useEffect(() => {
console.log("hi");
}, [state]);

댓글