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

181
Visualizações
El gancho UseEffect con la consulta de base de fuego solo representa la matriz vacía inicial incluso después de que la matriz ya no esté vacía
const ID = useSelector((state) => state.userDetail.userID); const [postItem, setpostItem] = useState([]); useEffect(() => { const q = query( collection(firestore, "latestPost"), where("userID", "==", ID) ); onSnapshot(q, (querySnapshot) => { querySnapshot.forEach((doc) => { postItem.push({ ...doc.data(), id: doc.id }); }); }); }, []);

Quería leer datos de firebase y configurar mi useState con una matriz vacía e incluso después de que los datos están en la matriz, la pantalla aún muestra una matriz vacía, necesito actualizar manualmente la pantalla para ver el cambio.

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

0

No deberías estar presionando directamente a postItem . Deberías estar usando setPostItem . También creo que debe agregar postItem al final de useEffect entre corchetes.

Así que tal vez algo como

 useEffect(()=> { const q = query( collection(firestone, "latestPost"), where("userId", "==", ID) ); onSnapshot(q, (querySnapshot) => { querySnapShot.forEach((doc) => { setPostItem([...postItem, {...doc.data(), id:doc.id}]) }); }); }, [postItem]);

Básicamente, eso significa que useEffect se ejecutará nuevamente una vez que haya setPostItem y también porque useState ha cambiado, actualizará la página.

Creo que así fue como está diseñado. ¡Sin embargo, que alguien me corrija si mi lógica es incorrecta!

about 4 years ago · Juan Pablo Isaza Relatório

0

La única forma en que reacciona sabe que necesita renderizarse nuevamente es si configura State. Mutar la matriz existente no provocará una nueva representación. Además, no olvide devolver la función de cancelación de suscripción para que su oyente de instantáneas pueda ser eliminado cuando el componente se desmonte:

 useEffect(() => { const q = query( collection(firestone, "latestPost"), where("userId", "==", ID) ); const unsubscribe = onSnapshot(q, (querySnapshot) => { const newItems = querySnapshot.docs.map(doc => ({ ...doc.data(), id: doc.id }); setpostItem(newItems); }); return unsubscribe; }, []);
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