Когда вы запускаете helloHandeler()
, он регистрирует setTimeout()
для запуска только через две секунды! Это поведение setTimeout()
.
Вместо этого вы должны setLoading()
немедленно, а затем setTimeout
прекратить загрузку через 2se c после. Возможно, вы захотите setShow()
после двух se c также, поэтому поместите его в setTimeout()
.
обновление
Также, помните, что JS работает асинхронно, поэтому, когда вы регистрируете setTimeout, loading
еще не true
.
const helloHandeler = () => {
setLoading(true)
setTimeout(() => {
setLoading(false)
setShow(!show);
}, 2000)
};