Interagir com APIs externas geralmente é essencial, e o React Query simplifica isso, permitindo que você se concentre nos dados, em vez da complexidade de buscá-los. Este guia orientará você na configuração de um projeto React Native usando Expo e na integração com React Query.
Para começar, instale o Expo CLI e crie um novo projeto. Se você já tem um projeto, pule para a próxima etapa.
npm install -g expo-cli
expo init my-react-native-query-app
Escolha um modelo com base nas suas necessidades.
React Query é poderoso para gerenciar o estado do servidor em seus aplicativos React Native.
npm install @tanstack/react-query
npx expo install @react-native-community/netinfo
Crie três ganchos personalizados em uma pasta de ganchos na raiz do seu projeto.
import NetInfo from '@react-native-community/netinfo'; import { onlineManager } from '@tanstack/react-query'; onlineManager.setEventListener((setOnline) => { return NetInfo.addEventListener((state) => { setOnline(!!state.isConnected); }); });
Isso permite a busca automática quando o aplicativo se reconecta à Internet.
import { useEffect } from 'react'; import { AppState, Platform } from 'react-native'; import { focusManager } from '@tanstack/react-query'; function onAppStateChange(status: AppStateStatus) { if (Platform.OS !== 'web') { focusManager.setFocused(status === 'active'); } } useEffect(() => { const subscription = AppState.addEventListener('change', onAppStateChange); return () => subscription.remove(); }, []);
Isso atualiza o estado do aplicativo quando ele está ativo.
import React from 'react'; import { useFocusEffect } from '@react-navigation/native'; export function useRefreshOnFocus(refetch: () => Promise ) { const firstTimeRef = React.useRef(true); useFocusEffect( React.useCallback(() => { if (firstTimeRef.current) { firstTimeRef.current = false; return; } refetch(); }, [refetch]), ); }
Este gancho personalizado aciona uma nova busca quando a tela está focada.
Em seu arquivo de rota principal, configure o seguinte:
import { QueryClient, QueryClientProvider, focusManager, } from "@tanstack/react-query"; import { AppStateStatus, Platform } from "react-native"; import { useOnlineManager } from "@/hooks/query/useOnlineManager"; import { useAppState } from "@/hooks/query/useAppState"; export default function RootLayout() { function onAppStateChange(status: AppStateStatus) { if (Platform.OS !== "web") { focusManager.setFocused(status === "active"); } } const queryClient = new QueryClient({ defaultOptions: { queries: { retry: 2 } }, }); useOnlineManager(); useAppState(onAppStateChange); return ({Rest of your project} ); }
Navegue até o diretório do seu projeto e inicie o servidor de desenvolvimento Expo:
expo start
Expo permite testes rápidos por meio do aplicativo Expo Go ou criando um aplicativo de desenvolvimento. Para obter mais detalhes sobre a criação de uma compilação de desenvolvimento, consulte a documentação da Expo.
Configurar um projeto Expo React Native com React Query simplifica o gerenciamento de estado e as interações de API. Ao aproveitar os recursos poderosos do React Query, como cache e atualizações em segundo plano, você pode se concentrar mais em seus dados e menos nas complexidades de buscá-los.
Boa codificação! ??? ??? ?
Isenção de responsabilidade: Todos os recursos fornecidos são parcialmente provenientes da Internet. Se houver qualquer violação de seus direitos autorais ou outros direitos e interesses, explique os motivos detalhados e forneça prova de direitos autorais ou direitos e interesses e envie-a para o e-mail: [email protected]. Nós cuidaremos disso para você o mais rápido possível.
Copyright© 2022 湘ICP备2022001581号-3