Мне нужно определить, находится ли запрос axios (с async/await) в фазе загрузки. Потому что мне нужно отключить кнопку, если запрос загружается.
Итак, это строка кода:
const response = await API.get("/url", options);
Теперь мне нужно отключить определенную кнопку, если этот запрос находится в фазе загрузки. Но я застрял в том, как решить эту проблему.
setState(true) //to initiate loading
const response = await API.get("/url", options);
setState(false) //to turn off loading
try{
setState(true) //to initiate loading
const response = await API.get("/url", options);
}
catch(err){}
finally{
setState(false) //to turn off loading
}
Вы можете добиться такого поведения, выполнив следующие действия:
1 - Создайте состояние с именем isLoading и инициализируйте его как false.
const [isloading, setIsloading] = useState(false);
2 - Получить текущее состояние выборки данных:
const fetchingData = async () => {
try {
setIsloading(true); // Set loading before sending API request
const response = await API.get("/url", options);
....
setIsloading(false); // Stop loading
} catch (error) {
setIsloading(false); // Stop loading in case of error
console.error(error);
}
}
3 - Отключить кнопку условно:
<button disabled = {isloading ? true : false}> button disabled while fetching data</button>
Это пример демо в codeandbox.