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

180
Vistas
Reaccionar setState sin actualizar el estado dentro de la función de devolución de llamada stomp.js

Tengo una página que se conecta a un socket SockJS sobre Stomp. Pero cuando pasa una función que se supone que debe cambiar el estado a la devolución de llamada .subscribe, no cambia el estado de la página (el resto de la función se completa normalmente) Aquí está el código:

 export default function HomePage() { ...some other states... const [isIncomingCall, setIsIncomingCall] = useState(false) function initSocket() { const socket = new SockJS(`${process.env.API_URL}/ws`); const stompClient = over(socket); stompClient.connect( {}, () => onSocketConnected(stompClient), onSocketError ) appContext.setSocket(stompClient) } function handleIncomingCall(data) { const state = JSON.parse(data.body.toLowerCase()); setIsIncomingCall(state) } function onSocketConnected(stompClient) { const options = { accessToken: cookies['logged-in'], }; stompClient.send("/app/connect", {}, JSON.stringify(options)); stompClient.subscribe(`/user/search/complete`, handleSearchComplete) stompClient.subscribe(`/user/search/failed`, handleSearchError) stompClient.subscribe(`/user/call/incoming`, handleIncomingCall) } useEffect(() => { if (!appContext.socket && cookies['logged-in']) { initSocket() } }, []) return ( <> <AnimatePresence> { isIncomingCall && <CallModal onAccept={acceptIncomingCall} onReject={rejectIncomingCall} /> } </AnimatePresence> ...other page code... </> ) }

La función initSocket se llama en la representación de la página dentro de useEffect. Intenté envolver la devolución de llamada con useCallback y vincularla a la página y llamar a setIsIncomingCall dentro de una función de flecha, pero no pareció ayudar.

about 4 years ago · Juan Pablo Isaza
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