Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

282
Visualizações
React Native Expo + Firestore: ¿cómo evitar la recuperación del caché si no hay conexión a Internet?

De forma predeterminada (al menos si está utilizando Expo), parece que si intenta .get() algo de Firestore sin conexión a Internet, los datos se devolverán desde el caché, incluso si la persistencia local no está implementada en el navegador.

Puede ver este comportamiento en Expo, con el sdk original de firebase, si ejecuta este método sin conexión:

 async function performSomeQuery(query, limit) { const querySnapshot = await query.limit(limit).get(); if (querySnapshot.metadata.fromCache) { throw new Error("It is from cache!"); } if (querySnapshot.empty) { return []; } const result = querySnapshot.docs.map(parseDoc); return result; }

Para mí, este comportamiento es un poco confuso... porque si intenta habilitar la persistencia local de Firestore en su aplicación Expo, obtendrá el código de error: unimplemented

 firebase.firestore().enablePersistence() .catch((err) => { console.log(err.code); // unimplemented for Expo });

¿Cómo puedo recibir excepciones en lugar de datos "en caché" cuando Internet no está conectado?

about 4 years ago · Juan Pablo Isaza
1 Respostas
Responde à pergunta

0

Primero, deberá instalar NetInfo desde @react-native-community/netinfo

Luego, copie esta función de orden superior (una utilidad):

 import NetInfo from "@react-native-community/netinfo"; export default function withInternet(callback) { async function wrapped(...args) { const { isConnected, isInternetReachable } = await NetInfo.fetch(); if (isConnected === false || isInternetReachable === false) { throw new Error("No internet connection"); } return callback(...args); } const name = callback.displayName ?? callback.name ?? "unknown"; wrapped.displayName = `withInternet(${name})`; return wrapped; };

Como puede ver, estamos saliendo de la función envuelta sin ejecutar la devolución de llamada si no hay conexión a Internet o no se puede acceder a ella. (Nota: es importante verificar si === false , porque la API de NetInfo podría devolver un valor nulo/indefinido si se desconoce el estado de la red).

Ahora, en su código, en lugar de usar su método api original, simplemente haga lo siguiente:

 const performSomeQueryWithInternet = withInternet(performSomeQuery); (async () => { try { await performSomeQueryWithInternet(stuff); } catch(err) { console.error(err); } })();

Nota: recomiendo combinar esta solución con un proveedor de contexto global donde escuche el estado de la red y muestre los posibles errores en un componente de brindis.

about 4 years ago · Juan Pablo Isaza Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda