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

78
Vistas
Desplazamiento infinito horizontal con solicitud de API

Estoy tratando de crear una función de desplazamiento horizontal infinito, en la que cuando el usuario llegue al extremo derecho o al último elemento de la lista, se activará una solicitud de API y el usuario podrá desplazarse más.

ingrese la descripción de la imagen aquí

Ya puedo lograr esto de alguna manera usando el controlador de eventos onTouchEnd . Sin embargo, al obtener los siguientes elementos, los agrega y luego vuelve al primer elemento. ¿Supongo que eso tiene algo que ver con volver a renderizar en reaccionar?

¿Hay quizás alguna forma mejor de manejar esto? O al menos, volver a la posición anterior a la que se desplazó el usuario. He buscado en muchas bibliotecas pero no parecen lograr lo que necesito.

Esto es lo que he hecho hasta ahora:

 import React from 'react'; import { Box, Avatar } from '@mui/material'; import { useDispatch, useSelector, } from '../../../../redux/store/configureStore'; import { nextPage, fetchAsyncMerchants, } from '../../redux/slices/deals/Merchants'; const MerchantList = () => { const dispatch = useDispatch(); const limit = 10; const { skip, merchants } = useSelector((state) => state.merchants); const boxWidthRef = React.useRef(); React.useEffect(() => { dispatch(fetchAsyncMerchants({ skip, limit })); // eslint-disable-next-line react-hooks/exhaustive-deps }, [skip]); return ( <Box sx={{ mt: '12px', mb: '16px' }}> {merchants && ( <Box ref={boxWidthRef} onTouchEnd={(event) => { dispatch(nextPage(limit)); //updates the skip counter to rerun useEffect }} onTouchStart={(event) => { console.log(event.touches[0]); }} sx={{ minHeight: '120px', boxShadow: 5, display: 'flex', justifyContent: 'space-between', borderRadius: '16px', overflow: 'auto', p: '0 5px', }} > {merchants.map((merchant) => { return ( <Box id="card-btn" key={merchant.id} sx={{ display: 'flex', flexDirection: 'column', minWidth: '100px', }} > <Avatar sx={{ height: '40px', width: '40px', mb: '4px', }} src={merchant.logo} /> </Box> ); })} </Box> )} </Box> ); }; export default MerchantList;
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