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

191
Views
Usando React UseEffect() para obtener datos de GraphQL

Estoy tratando de obtener datos de graphQL, y sé que al poner la función en el UseEffect() de reacción, podría llamar a la función una vez que los datos se actualicen y construyan. Sin embargo, estoy trabajando en una sala de chat y los datos no aparecen en la pantalla:

 import { CREATE_MESSAGE_MUTATION, MESSAGES_QUERY, MESSAGE_SUBSCRIPTION, } from "../graphql"; import { useQuery, useSubscription } from "@apollo/client"; import React, { useEffect } from "react"; import { Tag } from "antd"; const ChatBox = ({ me, friend, ...props }) => { //me friend are strings const chatBoxName = [me, friend].sort().join("_"); const { loading, error, data, subscribeToMore } = useQuery(MESSAGES_QUERY, { variables: { name: chatBoxName }, }); useEffect(() => { try { subscribeToMore({ document: MESSAGE_SUBSCRIPTION, variables: { name: chatBoxName }, updateQuery: (prev, { subscriptionData }) => { if (!subscriptionData.data) return prev; const newMessage = subscriptionData.data; console.log("Subscribing more data: ", newMessage); }, }); } catch (e) { console.log("Error in subscription:", e); } }, [subscribeToMore]); if (loading) return <p>loading ...</p>; if (error) return <p>Error in frontend chatbox: {error}</p>; return ( <div className="App-messages"> {console.log(data.chatboxs[0].messages)} {data.chatboxs[0].messages.map(({ sender: { name }, body }) => { <p className="App-message"> <Tag color="blue">{name}</Tag> {body} </p>; })} </div> ); }; export default ChatBox;

Después de un pequeño retraso en loading ... , se convierte en <div className="App-messages"> sin mensajes dentro. Sin embargo, en la consola puedo ver claramente los mensajes que quiero imprimir. ¿Cuál es el problema de la función en UseEffect() ? Sería muy apreciado si alguien puede ayudar.

about 4 years ago · Juan Pablo Isaza
1 answers
Answer question

0

{data.chatboxs[0].messages.map(({ sender: { name }, body }) => { // <- this part <p className="App-message"> <Tag color="blue">{name}</Tag> {body} </p>; })}

Como devolución de llamada, declaró una función que no devuelve elementos JSX.

Reemplace con esto

 {data.chatboxs[0].messages.map(({ sender: { name }, body }) => ( <p className="App-message"> <Tag color="blue">{name}</Tag> {body} </p>; ))}
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!