작성
·
291
0
const onChangeTerm = useCallback((e) => {
setTerm(e.target.checked);
console.log(term);
setTermError(false);
}, []);
console.log(term);
이렇게 term의 consol.log를 찍어서 확인해 봤는데 setState는 비동기이기에 term의 초기값이 false라고 했을때 useState는 비동기이니
하면첫번째 term의 consol.log는
false
true
true
false
fasle
true
이런식으로 진행되야 할꺼 같은데
실제로 로그 를 찍어보니까 onChangeTerm안에 있는 console.log(term)은 계속 false로 찍힙니다 이유가 무었인가요?
답변 2
0
그렇다면 더 이해가 안되는데 useCallback의 deps []이거로 설정되어있어서 실행이 안되는데 어쨰서 checkbox를 누를때 term이 true와 false가 번갈아 업데이트가 될 수있나요?
0
[]로 되어있다고 실행이 안 되는 게 아닌데요? 실행은 됩니다. []일 때 실행이 안 되는건 useEffect고요.
내부 term 변수가 업데이트가 안 될 뿐이죠.