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

154
Vistas
la animación de resorte de reacción solo funciona al hacer clic, no al pasar el mouse

Tengo un cubo giratorio básico que hice con react-three-fiber, y onPointerOver (también probé onPointerEnter ) Quiero rotarlo suavemente a su posición inicial a través useSpring . Sin embargo, no solo no lo hace cuando me desplazo, sino que solo lo hará al hacer onClick . Tengo una función totalmente diferente que se ejecuta al onClick , y si deshabilité esa función, el restablecimiento de la rotación falla por completo.

Tengo una configuración bastante simple en mi componente Box :

 export const Box = () => { const [active, setActive] = useState(false); const boxRef = useRef<Mesh>(); const starterRotation = [0, 1, 1]; useFrame(() => { if (boxRef.current) { boxRef.current.rotation.x += 0.01; boxRef.current.rotation.y -= 0.01; } }); const [resetRotation, setSpring] = useSpring(() => ({ rotation: starterRotation })); // trying to use the `set` syntax to call the useSpring and smoothly animate to a certain rotation. const springs = useSpring({ scale: active ? 1.5 : 1, config: config.wobbly }); return ( <animated.mesh // @ts-ignore rotation={resetRotation.rotation} scale={springs.scale} onClick={() => setActive(!active)} onPointerOver={() => setSpring.start()} ref={boxRef} > <boxGeometry args={[2, 1, 2]} /> <meshStandardMaterial color="royalblue" /> </animated.mesh> ); };

Aquí hay un ejemplo en vivo: https://codesandbox.io/s/react-spring-rotating-cube-np4v6

Por lo que puedo decir en sus documentos , esta es la forma correcta. También vi algunas discusiones sobre problemas de github al respecto, y parecía haber cierta preocupación acerca de que el segundo argumento de la deconstrucción useSpring no funcionaba correctamente, pero la rotación funciona para mí: es solo el evento desencadenante que no funcionará.

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

0

Funciona, el problema es que todavía está actualizando la rotation en función de la referencia en una llamada de useFrame , por lo que se actualiza cada cuadro. Lo que anulará el valor de la animación.

El segundo problema es que si impidió que useFrame la rotation , no funcionará porque el valor interno del resorte se establecerá en [0,1,1] pero eso es lo que desea que se anime.

Esta es una buena oportunidad para usar from y to accesorios de useSpring , lo que haría sería usar una referencia para detener la animación de useFrame y luego usar la referencia para obtener los valores actuales de la rotación para usar a from de la función springSet.start y luego to cuál es el valor starterRotation que ha declarado.

Puede ver esto en efecto aquí: https://codesandbox.io/s/react-spring-rotating-cube-forked-1j02g?file=/src/components/Box.tsx

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