React native - настраиваемый хук useAx ios повторить попытку с useNetInfo - PullRequest
0 голосов
/ 05 мая 2020

Новичок в 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

Любые отзывы приветствуются:)

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...