zamarrowski / Curso-React-Testing-GraphQL

Curso React, testing y GraphQL
36 stars 21 forks source link

Actualizando estado de hooks #7

Closed pedroaragon360 closed 4 years ago

pedroaragon360 commented 5 years ago

Hola!

Estoy tratando de animar el desplazamiento horizontal de un elemento con scrollLeft hasta 100px cuando hago click en un boton.

He creado una referencia al elemento con const contenedorPreguntas = useRef(); y referenciado el elemento <div ref={contenedorPreguntas} >

He creado un estado para tener seguimiento de por donde va el scroll: const [scrollX, setScrollX] = useState(0);

Y con un boton que ejecute el scroll <button onClick={scrollH}>Mover</button> Y la función

  const scrollH = (e) => {
      if(scrollX<100){
        contenedorPreguntas.current.scrollLeft += 1; 
        setScrollX(scrollX+1); 
        setTimeout(function(){ scrollH(); },100);
      }
  }

El scroll funciona pero no para nunca, ya que scrollX siempre está a 0, y setScrollX no hace cambiar el valor, únicamente la primera vez que pincha el usuario. Me gustaría entender el funcionamiento y cómo solucionarlo. Gracias!