Не знаю, в чём у тебя проблема, но такой-же код отрабатывает нормально, причём в любых вариантах:
// fetch
import React, { useState } from 'react'
export const Button = () => {
const [ disabled, setDisabled ] = useState(false)
const [ data, setData ] = useState(null)
const handleClick = () => {
console.log('fetch')
setDisabled(true)
fetch('https://fakestoreapi.com/products').then(r => r.json()).then(data => {
console.log('fetched', data)
setDisabled(false)
setData(data)
})
}
return (
<>
<button type="button" onClick={ handleClick } disabled={ disabled }>
Fetch
</button>
{ data ? (
<pre>{ JSON.stringify(data, null, 2) }</pre>
) : null }
</>
)
}
// timeout
import React, { useState } from 'react'
export const Button = () => {
const [ disabled, setDisabled ] = useState(false)
const handleClick = () => {
console.log('timeout')
setDisabled(true)
setTimeout(() => {
console.log('timed out')
setDisabled(false)
}, 2000)
}
return (
<button type="button" onClick={ handleClick } disabled={ disabled }>
Timeout
</button>
)
}
P.S. А вообще, не могу понять, почему код скинут кусками. Отправь вообще весь компонент, просто скопируй всё и поменяй в вопросе самом предыдущий код. Может у тебя ещё в чём-то дело.