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

207
Vistas
Reaccionar desplazamiento con pestañas antd (scrollIntoView) que funciona solo para algunas pestañas

Estoy creando un chat de múltiples pestañas como UI usando reaccionar y antd, se parece a la imagen a continuación.

En el lado izquierdo, puede ver varias pestañas que muestran los apellidos usando las pestañas antd, en el lado derecho estoy usando comentarios antd para mostrar cada comentario en el hilo de conversación

Ahora, el problema es que estoy tratando de usar useRef para que se desplace automáticamente hacia abajo cuando se envía un nuevo mensaje, y mi código funciona, pero solo si estoy en la primera pestaña o en la última pero no con el uno en el medio y estoy atascado en averiguar por qué

Interfaz de usuario de muestra

Este es mi código:

 //reference and scroll function const myRef = useRef(null); const executeScroll = () => {myRef.current.scrollIntoView({ behavior: "smooth" })}; //useEffect associated to the source of the chat messages array useEffect(executeScroll, [BuzonDataAgrupado]); //And the Tab component <Tabs tabPosition='left' onChange={handleTabChange}> { Object.entries(BuzonDataAgrupado).map(([tabName, mensajes]) => { return( <TabPane tab={tabName} key={tabName}> <Card className='buzon-container'> <div style={divStyle}> {mensajes.map((mensaje) => { return( <Comment className='buzon-message-sent' key={mensaje._id} author={<a>{mensaje.nombreFamilia}</a>} content={<p>{mensaje.Texto}</p>} datetime={ <Tooltip title {moment(mensaje.Fecha).format('YYYY-MM-DD HH:mm:ss')}> <span>{moment(mensaje.Fecha).fromNow()}</span> </Tooltip>}/> )//return })} //map //This is the reference where is scrolls to at the end of message list <div ref={myRef}></div> </div> <Divider /> <div className='buzon-message-editor'> <Form.Item> <TextArea rows={2} onChange={handleMensajeChange} value={NuevoMensaje} /> </Form.Item> <Form.Item> <Button htmlType="submit" loading={SendingMessage} onClick={sendMessage} type="primary">Enviar mensaje</Button> </Form.Item> </div> </Card> </TabPane> )}) } </Tabs>

¿Pensamientos?

about 4 years ago · Juan Pablo Isaza
1 Respuestas
Responde la pregunta

0

¿Has depurado el myRef ? ¿Siempre se reasigna al div adecuado cuando cambias de pestaña?

No puedo ver por qué su código no funcionaría, pero tengo una idea para una solución alternativa:

  1. darle al div una id
  2. encuentre el elemento por la id y utilícelo para desplazarse
 document.getElementById('your-div-id').scrollIntoView({ behavior: 'smooth' })

Podría mejorar esto si pone ref en el componente <Tabs> (o su padre si no es posible) y luego podría usar

 tabsRef.current.getElementById('your-div-id').scrollIntoView({ behavior: 'smooth' })

Tenga en cuenta que en javascript podría ser una buena idea probar primero si el resultado de getElementById('your-div-id') no es null o undefined .

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