Новичок в React Native, я пытаюсь реализовать собственный хук для вызовов API (API погоды). Хук должен повторить вызов, если устройство не в сети. Я использую Ax ios и Netinfo Hooks.
api / weather. js
export default function useWeather() {
const [{ getData }, executeGet] = useAxios(
WEATHER_URL, { manual: true }
);
const netInfo = useNetInfo();
const [requestPending, setRequestPending] = React.useState(false);
function getWeather() {
executeGet();
setRequestPending(true);
}
React.useEffect(() => {
if (requestPending) {
if (netInfo.isConnected) {
setRequestPending(false);
} else {
const id = setInterval(executeGet, 1000);
return () => clearInterval(id);
}
}
}, [requestPending, netInfo, executeGet]);
return [getData, getWeather];
}
затем в приложении. js
const [getData, getWeather] = useWeather();
return (
<SafeAreaView>
<Button
onPress={getWeather}
title="Click"
/>
<Text>{JSON.stringify(getData)}</Text>
</SafeAreaView>
);
Проблема Не работает
Примечание
- Сборка с Expo 3.17.24
- Я заметил Ax ios предоставляет перехватчики, но я попытался использовать хуки, насколько это возможно.
Вопросы
- Это хороший подход?
- относительно deps массива моего эффекта, я не уверен, что нужно указать
executeGet
Любые отзывы приветствуются:)