리액트의 18버전 이상부터는 automatic batching 기능이 생겼다.
"state
변경한 함수들이 근처에 있다."
→ 하나로 합쳐서 최종적으로 딱 한번만 state
를 변경한다.
즉, state
변경함수를 쓸때마다 재렌더링을 시켜주는게 아니라 state
변경이 다 되어지면 마지막에 재렌더링 시켜준다.
ReRendring X -> state 변경함수()
ReRendring X -> state 변경함수()
ReRendring X -> state 변경함수()
ReRendring O -> state 변경함수()
예시)
let [fade, setFade] = useState('');
useEffect(()=>{
//fade라는 state를 end로 바꿔주세요.
setFade('end')//Second 최종적으로 end가 되는거임
return(
setFade("") //First
)
},[tap])
clean up function에서 첫번째setFade("")
변경함수가 실행되고 useEffect에서 두번째 setFade("end")
가 변경함수가 실행된다. 그렇기 때문에 automatic batching 기능으로 최종적으로 setFade("end")
마지막으로 실행된다.