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

265
Visualizações
No se puede eliminar el oyente de Firestore dentro de una función

Mi ejemplo de código se parece a lo siguiente:

 useEffect(() => { specialfunction();//listener for chat operations }, []); const specialfunction = async() => { var mylistener = firebase.firestore()...onSnapshot((snapshot) => { //do something with the docs retrieved }); //my unlucky try to remove the listener after I leave the screen return () => { try{ mylistener(); console.log("LISTENER REMOVED") }catch(error){console.log(error)}; } };

Por lo general, si desea eliminar un oyente de Firestore, simplemente llame a la variable a la que lo adjuntó, en mi ejemplo, 'mylistener ()'. Desafortunadamente, mi oyente no se detiene. Después de salir de la pantalla y volver a entrar varias veces y recibir un documento, noto que mi oyente dispara varias veces. Tampoco puedo detenerlo fuera de mi 'función especial' porque no es un oyente de base de datos donde solo puedo llamar a la referencia nuevamente y detenerlo, se trata de un oyente de Firestore aquí.

Tampoco puedo poner 'mylistener' fuera de la 'función especial', debe permanecer dentro.

¿Pueden ayudarme a detener 'mylistener' después de salir de la pantalla?

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

0

No estoy particularmente bien versado en firebase pero si desea eliminar el detector de eventos cuando se trata del gancho useEffect , la plantilla debería ser la siguiente

 useEffect(() => { window.addEventListener("keyup", handleKeyUp) return () => window.removeEventListener("keyup", handleKeyUp) }, [collapsed, handleKeyUp])

Tenga en cuenta que en su gancho useEffect necesita return una función que elimine el detector de eventos

about 4 years ago · Juan Pablo Isaza Relatório

0

La clave para esta solución fue otra publicación pero bajo un tema diferente . Es importante entender que debe predefinir una variable y luego sobrescribirla con el oyente de Firestore. En este caso, podrá separar el oyente en la parte de retorno del 'useEffect'-Hook una vez que salga de la pantalla, el código se ve así ahora:

 let mylistener; useEffect(() => { specialfunction();//listener for chat operations return () => { try{ mylistener(); //here you need to remove the listener console.log("LISTENER REMOVED") }catch(error){console.log(error)}; } }, []); const specialfunction = async() => { var mylistener = firebase.firestore()...onSnapshot((snapshot) => { //do something with the docs retrieved }); };

Además, la 'función especial' no necesita ser asíncrona, pero hago llamadas asíncronas dentro de esta función, depende de usted.

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