Я бы создал логическое значение в вашем локальном состоянии, например isWaiting: false
, и в функции внутри вашего обработчика событий (ваш метод асинхронного метеора), после нажатия этой кнопки значение isWaiting
должно измениться на true
. И в зависимости от того, какой шаблон вы выберете (асинхронный / ожидающий или обещание), я бы установил isWaiting
обратно в false как при успешном, так и при отклонении. После этого атрибут disable
зависит от состояния isWaiting
.
Вы можете использовать try-catch-finally:
const [isWaiting, setIsWaiting] = useState(false);
async function meteorMethod() {
setIsWaiting(true)
try {
// await...
} catch(err) {
// ...
}
finally {
setIsWaiting(false)
}
}
return (
<>
<button disable={isWaiting} onClick={meteorMethod}>Submit</button>
</>
)