• Блокировка кнопки на время выполнения функции?

    @ivan_ivanov_ivanych
    Реакт имеет свойство оптимизировать изменение состояния компонента в одной функции, для того, чтобы избегать лишних перерендеров компонента. Обойти это можно можно с помощью асинхронных функций.
    async function tap() {
        setDesable(true);
        //какой то код
         await new Promise((resolve) => setTimeout(resolve, 1000));
        setDesable(false);
    }

    В этой функции сначала выполняется первая функция изменения состояние setDisable(true), далее ожидание выполнения промиса, во время которого происходил перерендер. И далее, спустя 1000 мс, вызывается setDisable(false)
    Ответ написан