es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

React Spring utiliza el gancho useSpring para cambiar entre el estado inicial y el estado final sin animación.

He estado atrapado intentando hacer que algunos divs simplemente se desvanezcan cuando se vuelven visibles en la pantalla. Tal vez me falte algo, pero aquí está el código.

Estoy usando los módulos React-Spring V9 y React-Visibility-Sensor.

Renderizado del componente principal:

{
    ArrayOfText.map(text => (
        <visibilitysensor key="{text}">
            {({ isVisible }) => (
                <myitem isvisible="{isVisible}" text="{text}"></myitem>
            )}
        </visibilitysensor>
    ))
}

Componente hijo:

export default function MyItem({ text, isVisible }) {

    const animatedStyle = useSpring({
        config: { ...config.gentle },
        to: {
            opacity: isVisible ? 1 : 0
        }
    });

    return (
        <animated.div style="{animatedStyle}" classname='large-header-text'>
            {text}
        </animated.div>
    );
}

Esto funciona en el sentido de que los divs aparecerán en la pantalla con un ligero retraso después de que se vuelven visibles. El problema que tengo es que no hay animación. Es solo opacidad 0, luego espera ~1 segundo, luego instantáneamente opacidad: 1.

Si alguien ha tenido este problema antes, ¡por favor, hágamelo saber cómo lo solucionó! Gracias.

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Parece que el problema podría estar relacionado con el uso de useSpring de React-Spring. En lugar de establecer la opacidad directamente, intente usar la propiedad from para establecer el valor de opacidad inicial antes de animarlo hasta 1. Aquí hay un ejemplo:

    const animatedStyle = useSpring({
      from: { opacity: 0 },
      to: { opacity: isVisible ? 1 : 0 },
      config: { ...config.gentle },
    });
    

    Esto debería crear una transición más suave desde la opacidad 0 hasta 1. También puede ajustar la propiedad config para cambiar la velocidad y el tiempo de la animación.

Comments are closed.