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

206
Visualizações
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 Respostas
Responde à pergunta

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 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