Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

174
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!