자바스크립트는 일반적으로 코드를 작성하면 동기적(Synchronous)으로 작동한다. 하지만 useState의 setter 함수인 setState는 비동기적(Asynchronous)으로 작동한다. 다시 말해 setState 함수의 실행이 완료될 때까지 기다려주지 않고 곧바로 다음 코드가 실핸된다는 것이다. 리액트에서 setState로 state를 관리하다보면 비동기적으로 작동해 내가 의도한대로 값을 갖고 있지 않을 때가 있다. setState가 의도대로 동작하지 않는 이유 자바스크립트는 동기적(Synchronous)으로 동작한다. 하지만 때때로 동기/비동기에 대한 이해가 부족하거나 라이브러리에서 제공하는 함수들에 대한 이해 없이 사용하게 되면 개발자는 의도대로 동작하지 않는 코드에 당황할 수 밖에 없다...