Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

147
Views
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 answers
Answer question

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!