Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

230
Vistas
¿Cómo darse de baja de una transmisión de Firestore usando la devolución de llamada de Vue onInvalidate?

Estoy usando Vue 3 para crear un componente de Firebase que se suscriba a una onSnapshot() .

Y estoy tratando de darme de baja de esa transmisión llamando a la función unsubscribe() devuelta dentro watchEffect y onInvalidate . Aquí están los documentos de Vue que explican esas funciones particulares .

Usando un console.log() puedo confirmar que mi watchEffect se está disparando.

Pero no puedo activar mi segundo console.log() que existe dentro de onInvalidate y, por lo tanto, no estoy seguro de si alguna vez se llama a la función unsubscribe() .

En el código siguiente, ¿por qué no aparece my console.log("unsubscribe fired"); alguna vez fuego?

¿De qué otra forma puedo estar seguro de haber cancelado la suscripción a la transmisión de Firestore? ¿Hay un registro de esto dentro del panel de control de Firebase o algo similar?

Aquí está el componible de Vue Firestore (está escrito en TypeScript):

 import { ref, reactive, watchEffect } from "vue"; import { projectFirestore } from "@/firebase/config"; import { query, orderBy, onSnapshot, DocumentData, collection, } from "firebase/firestore"; const useCollection: any = (col: any) => { const documents = reactive<Record<string, unknown>[]>([]); const error = ref<string | null>(null); // references const collectionReference = collection(projectFirestore, col); const collectionOrdered = query( collectionReference, orderBy("createdAt", "desc") ); // updates const unsubscribe = onSnapshot( collectionOrdered, (snapshot) => { snapshot.docs.forEach((doc: DocumentData) => { documents.push({ ...doc.data(), id: doc.id }); }); error.value = null; console.log(documents); }, (err) => { console.log(err.message); documents.splice(0); error.value = err.message; } ); watchEffect((onInvalidate) => { console.log("watchEffect fired"); //This fires onInvalidate(() => { unsubscribe(); console.log("unsubscribe fired"); //This does not fire }); }); return { documents, error }; }; export default useCollection;
about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Porque no tiene ningún objeto reactivo en su devolución de llamada de watchEffect

about 4 years ago · Juan Pablo Isaza Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda