Início rápido para nativo
Passe o NetInfo do seu app e as margens de área segura do seu layout. Funciona do mesmo jeito no Expo e no React Native puro.
import NetInfo from '@react-native-community/netinfo';
import { SafeAreaProvider, useSafeAreaInsets } from 'react-native-safe-area-context';
import { OfflineDetector } from '@rogeriodocarmo/offline-detector-native';
function Root() {
const insets = useSafeAreaInsets();
return (
<OfflineDetector netInfo={NetInfo} insets={insets}>
<App />
</OfflineDetector>
);
}
export default function Main() {
return (
<SafeAreaProvider>
<Root />
</SafeAreaProvider>
);
}
Ao abrir online, nada é mostrado. Quando o app fica offline, as três peças aparecem com "Sem
internet". Quando ele volta, "Conexão restabelecida" aparece por recoveryMs (4 segundos) e nunca na
abertura. A demonstração ao vivo mostra a
versão web do mesmo comportamento.
O NetInfo é passado, não exigido
O pacote nunca importa @react-native-community/netinfo por conta própria; assim, o Metro nunca o
trata como uma dependência que você não instalou. Passe o módulo na prop netInfo, como acima.
Sem ele, presume-se que a interface de rede está ativa e só a sonda de alcance decide, o que demora
mais para perceber que você ficou offline. Builds de desenvolvimento registram um aviso. Para ter
controle total, passe o seu próprio adapter (veja createNativeAdapter na
referência nativa).
Margens de área segura
Passe insets vindo de useSafeAreaInsets(). O padrão é a altura da barra de status do Android no
topo e zero nos demais lados. Isso está errado em iPhones com notch; portanto, passe as margens
neles.
Verificar de novo ao voltar
Tentar novamente sempre mostra "Verificando…" na hora. Uma nova verificação em segundo plano, ao voltar ao app, só a mostra quando uma tela opta por isso:
import { useRecheckOnReturn } from '@rogeriodocarmo/offline-detector-native';
function Checkout() {
useRecheckOnReturn({ checkingFeedback: 'brief' });
return <Pay />;
}
O pacote nativo reexporta os hooks da camada React, então ele é o único pacote a instalar e de onde importar. Veja Verificar ao voltar.
Não verificado em dispositivo
O comportamento é coberto por testes de integração em Jest com o pacote React real. Os fluxos em dispositivo ou emulador (Maestro) pertencem ao app de demonstração em Expo e não foram executados para esta versão da documentação.