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

464
Vistas
Firebase y Nuxt3: ¿Cómo separar el oyente onSnapshot?

Estoy usando Firestore onSnapshot listener en un componente de mi aplicación Nuxt3. Me pregunto cómo separar el oyente cuando el componente está desmontado. ¿Cómo separo con éxito el oyente? Supongo que podría llamar al oyente para cancelar la unsubscribe en el onUnMounted .

Configuré el oyente en un onMounted() y separado de esta manera:

 <script setup> import { useUserStore } from '@/stores/user' import { onSnapshot, collection, query, where, getDocs } from 'firebase/firestore' const userStore = useUserStore() const loading = ref(false) const userPosts = reactive([]) const unsubscribe = ref(null) onMounted(async () => { const { firestore } = useFirebase() const userPostsRef = collection(firestore, 'posts') const q = query(userPostsRef, where('uid', '==', userStore.userProfile.uid)) unsubscribe.value = onSnapshot(q, (snapshot) => { snapshot.docChanges().forEach((change) => { if (change.type === 'added') { console.log('added', change.doc.data()) userPosts.push(change.doc.data()) } if (change.type === 'modified') { console.log('modified', change.doc.data()) userPosts.splice( userPosts.findIndex((post) => post.id === change.doc.id), 1, change.doc.data() ) } if (change.type === 'removed') { console.log('removed', change.doc.data()) userPosts.splice( userPosts.findIndex((post) => post.id === change.doc.id), 1 ) } }) }) loading.value = false }) onUnmounted(() => { unsubscribe.value //<-----is this the correct way to detach it? })

Editar: acabo de confirmar que el método anterior no elimina el oyente porque cada vez que navego fuera de la página, obtengo los registros de la consola de ('agregado', 'modificado', etc.). SO, debo estar haciendo algo mal.

about 4 years ago · Santiago Gelvez
1 Respuestas
Responde la pregunta

0

La cancelación de unsubscribe es una función, por lo que deberá llamarla como se muestra a continuación:

 onUnmounted(() => { // call only when unsubscribe is not null unsubscribe.value && unsubscribe.value() // or use optional chaining unsubscribe.value?.(); })
about 4 years ago · Santiago Gelvez 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