Pero ahora es un buen momento para mencionar, de hecho, voy a compartir una diapositiva al final con un enlace a todo este código. Así que si tienes curiosidad, si quieres ver exactamente cómo funciona esto, podrás hacerlo.
Finalmente, obtenemos ese valor de rotación, y lo aplicamos como una transformación de CSS, estableciendo esencialmente un estilo en línea. Entonces, ¿qué pensamos de esto? ¿Funciona? Bueno, funciona como un prototipo. Funciona como un MVP. Pero a menudo, hay bastante distancia entre, funciona en mi máquina en localhost y está listo para producción.
Para empezar, todo este código se ejecuta mucho, como decenas y decenas de veces por segundo. Y el problema con eso es que obtener una solicitud de cliente, obtener un cuadro delimitador, es algo lento. Lo pensamos, ¿verdad? Esta caja realmente no cambia a medida que el usuario mueve su ratón. Ciertamente, lo hace. De hecho, cambia muy ligeramente debido a la rotación. Pero el centro no cambia. Y entonces, si queremos que esto sea eficiente, ¿realmente tenemos que estar recalculando esa caja decenas y decenas de veces por segundo?
Así que lo que voy a hacer es que voy a tomar estas dos líneas y las voy a mover por encima del manejador de eventos, así que ahora solo hace este trabajo cuando muevo el ratón. Pero esto tampoco funciona muy bien. Por ejemplo, necesitamos recalcular el cuadro delimitador cuando el usuario se desplaza porque ahora, cuando el usuario está en la parte superior de la página, esta es la distancia, pero a medida que se desplazan, esa distancia cambia. Entonces, ¿entiendes lo que estoy diciendo, verdad? Hay un camino entre el prototipo funcional y la versión lista para producción.
Además de todo lo que ya tenía, también tengo que agregar oyentes de eventos al evento de desplazamiento, también estoy usando un observador de redimensionamiento. Esto me dirá no solo… En realidad, no creo que te diga si la ventana se redimensiona. Te dice si el elemento se redimensiona o si uno de sus ancestros tiene un cambio en CSS que lo hace redimensionar. Entonces, esto es mejor, pero todavía falta un montón de cosas. Para empezar, debería estar limpiando estos oyentes de eventos, ¿verdad? Es una cosa comenzar ese trabajo, también queremos detenerlo. Como si el usuario se aleja de esta página, no deberíamos seguir rastreando la posición del ratón. Y tal vez queramos rebotar esto para que no lo estemos calculando en cada evento de desplazamiento, porque eso también se dispara muy, muy rápidamente.
Entonces, hablemos de cómo React puede resolver algunos de estos problemas. Y ahora lo tenemos funcionando en React. Como esta es una masterclass de React, voy a suponer que todos ustedes están algo familiarizados con los fundamentos de React. Incluso si no lo están, creo que esto tendrá sentido. Vamos a mantener las cosas bastante a nivel general. Entonces, de inmediato, vemos algo bastante interesante. Const mouse position es igual a useMousePosition.
Comments