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

175
Vistas
Pasar una instantánea a una función externa y recibir datos de ella

Estoy usando Firebase aquí, pero mi pregunta es más general y no está relacionada con Firebase (creo)

Firebase tiene una función de instantánea que sirve como detector de cambios:

 import { getDatabase, ref, onValue} from "firebase/database"; const db = getDatabase(); const starCountRef = ref(db, 'posts/' + postId + '/starCount'); onValue(starCountRef, (snapshot) => { const data = snapshot.val(); updateStarCount(postElement, data); });

Estoy tratando de poner esa lógica en una función separada y recibir mis cambios en mi componente. La función exterior:

 export function messagesListener() { const db = getDatabase(); const messagesRef = ref(db, "messages"); return onValue(messagesRef, (snapshot) => { console.log('THERE HAS BEEN A CHANGE'); const data = snapshot.val(); }); }

Y en mi componente:

 useEffect(() => { const listener = messagesListener(); }, []);

Pero eso es incorrecto (no sé cómo usar ese oyente para recuperar nuevos datos de la instantánea cuando hay un cambio). ¿Cuál sería una forma correcta de hacerlo para recibir datos de la instantánea que reside en esa función de MessageListener?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

Puede intentar crear un gancho personalizado para eso:

 function useValueUpdate() { const [value, setValue] = useState(); const db = getDatabase(); const starCountRef = ref(db, 'posts/' + postId + '/starCount'); onValue(starCountRef, (snapshot) => { const data = snapshot.val(); setValue(data); }); return value; }

para que pueda ser utilizado en un componente como este:

 const dbValue = useValueUpdate(); useEffect(() => {...}, [dbValue]);
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