Animando React con Maestría

Rate this content
Bookmark

Las animaciones son el corazón de las experiencias web cautivadoras, pero si se usan descuidadamente, el encanto se desvanece en frustración. Únete a Nikhil en un emocionante viaje mientras revela los secretos para crear animaciones fascinantes y de alto rendimiento en tus aplicaciones de React.

En esta charla dinámica, Nikhil profundiza en el mundo de la animación, desglosando los cuellos de botella comunes que amenazan la capacidad de respuesta de tu aplicación. Aprende cómo identificar, depurar y eliminar estos obstáculos de rendimiento, asegurando que tus animaciones sean tan rápidas como cautivadoras.

This talk has been presented at React Summit 2024, check out the latest edition of this React Conference.

Nikhil Sharma
Nikhil Sharma
22 min
18 Jun, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

En esta charla, el orador discute cómo mejorar la animación en las aplicaciones de React y optimizar la animación en los navegadores. Explica el pipeline de animación del navegador y la importancia de evitar caídas de fotogramas. El orador compara las animaciones CSS y JavaScript, destacando los beneficios de usar la API requestAnimationFrame. También se discute la combinación de animaciones CSS y JavaScript utilizando la API de Web Animation. La charla concluye con consejos sobre cómo evitar cálculos redundantes y proporciona recursos adicionales para seguir aprendiendo.
Available in English: Animating React With Finesse!

1. Introducción a la animación en React

Short description:

Bienvenidos a React Summit. En esta sesión, exploraremos cómo mejorar la animación en las aplicaciones de React. Soy Nikhil, un ingeniero de software en Boosman, apasionado por los sistemas de diseño, el rendimiento y React. Conéctate conmigo en GitHub y Twitter. ¡Empecemos!

Hola a todos, bienvenidos a otra sesión de la cumbre de React. Y en esta sesión hablaremos sobre cómo llevar nuestro juego de animation al siguiente nivel animando React con elegancia.

Antes de comenzar, les contaré un poco sobre mí. Soy Nikhil y soy un ingeniero de software aquí en Boosman. Me encanta hablar sobre los sistemas de diseño, el rendimiento y React en general.

Así que si también eres un entusiasta del front-end como yo, he dejado mis nombres de usuario de GitHub y Twitter aquí en las diapositivas. Siéntete libre de conectarte, sería una gran charla. Además de esto, me encanta dar charlas y también me encanta viajar, me encanta jugar deportes, especialmente cricket y tenis de mesa. He estado aprendiendo tenis de mesa especialmente durante bastante tiempo y es algo súper divertido. Así que sí, va a ser una buena charla. Me encantaría conectarme con todos ustedes, eso es todo.

2. Understanding Animation in Browsers

Short description:

Una animación es todo lo que un usuario hace en una aplicación. Los navegadores crean fotogramas para analizar las interacciones del usuario. Se producen caídas de fotogramas cuando se compromete la ventana de 16,7 milisegundos del navegador. El navegador recorre el código, genera fotogramas, calcula estilos, determina el diseño y luego pinta todo en píxeles.

Muy bien, así que comencemos nuestra charla con una afirmación muy simple que es, ¿qué es exactamente una animation? La oración realmente lo responde todo. Todo lo que haces en una aplicación como usuario es básicamente una animation.

Ahora, es posible que estés pensando, ¿no son un botón flotante o propiedades como transform, etc., o un carrusel que aparece, todas estas cosas son animations y no otras cosas? Básicamente, lo que entiende el navegador es todo lo que haces como usuario, ya sea desplazarte, hacer clic en un botón o pasar el cursor sobre un botón, incluso si no muestra ninguna animation, todo es en realidad una animation para el navegador, ¿verdad?

Y si quieres visualizarlo en tu mente, es básicamente como un libro de imágenes que también mantiene el navegador. Cada vez que te desplazas o interactúas con tu sitio web, el navegador crea un conjunto de fotogramas para que puedas analizar lo que está sucediendo y los ejecuta todos juntos como un libro de imágenes, para que tengas una idea de que las cosas realmente se están moviendo.

Ahora, donde realmente radica el problema es cuando los fotogramas que tiene el navegador, si este ciclo de fotogramas se desordena en algún momento, ahí es donde ocurren los problemas o cuando el rendimiento de las animations disminuye. Ahora, si intentas entender qué es realmente una caída de fotogramas o por qué los fotogramas realmente caen cuando estamos animando.

Básicamente, se debe a que cada vez que tu navegador tiene una ventana de 16,7 milisegundos, cómo se calcula esa matemática es básicamente lo que ves en la pantalla aquí. Ahora, si quieres lograr 60 fotogramas por segundo y tienes mil milisegundos, si los divides, obtendrás aproximadamente 60, aproximadamente 16,7 milisegundos. Entonces, tu navegador realmente tiene 16,7 milisegundos para generar cada fotograma.

Ahora, lo que realmente necesita hacer durante este conjunto particular de tiempo. Bien. Tomemos un ejemplo. He escrito estas dos o tres líneas de código JavaScript aquí, que en realidad está creando, básicamente agregando una clase, que es mi caja especial a mi caja. Ahora, veamos cómo el navegador realmente recorre y analiza todo tu código. Primero, descubre, oh, ahora algo ha cambiado. Se encontró con algo de JavaScript y dice, oh, necesito generar otro fotograma. Y ahora comienza el tiempo de 16 milisegundos para el navegador.

Lo siguiente que analiza el navegador es, oh, OK, hay algún cambio de estilo que también ha estado en este archivo JavaScript, que estoy agregando algunas clases y también necesito averiguar qué hacen estas clases, qué tipo de recálculo de estilo debo hacer. Bien. Eso sería un segundo paso. En el tercer paso, el navegador descubre que, OK, he calculado los estilos, he ejecutado el JavaScript. Ahora necesito averiguar cómo renderizar todas estas cajas en la pantalla. Bien. Para esto, el navegador necesita conocer el diseño. Bien. Cuáles serán las dimensiones de cada una de las divisiones que tienes y cómo debe posicionarse en la pantalla. Bien. Esta es como esa fase de diseño donde el navegador está tratando de hacer esos cálculos.

En el cuarto paso, cuando haya terminado, intenta decidir que, OK, ahora he descubierto el diseño. Necesito pintar todo en términos de píxeles y para pintar.

Check out more articles and videos

We constantly think of articles and videos that might spark Git people interest / skill us up or help building a stellar career

El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
React Summit US 2023React Summit US 2023
28 min
El Potencial Caprichoso de los Marcos de Trabajo de JavaScript
Top Content
The speaker discusses the whimsical and detailed work of Stripe, particularly their interactive and dynamic pages. They explain the use of React for building whimsical details and tracking mouse position. The speaker introduces React Spring for smooth animation and React3 Fiber for creating a 3D egg model. They also mention the use of Framer Motion and React server components for animating CSS properties.
Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
React Day Berlin 2022React Day Berlin 2022
28 min
Animaciones Emocionales y Funcionales de la Interfaz de Usuario en React
Today's Talk discussed the importance of UI animations in React, both functional and emotional. Examples were given using CSS and Framer Motion, with a focus on user feedback and accessibility. Design guidelines and animation usage were highlighted, as well as the consideration of negative emotions in animations. The Talk also touched on designing 404 error pages and concluded with gratitude to the audience and organizers.
Sigue Desplazándote
JSNation Live 2021JSNation Live 2021
33 min
Sigue Desplazándote
Scroll animations can enhance user experience when done properly, but should not distract from important information. CSS, JavaScript, and plugins like Scroll Trigger can be used to achieve scroll animations. GreenSock's ScrollTrigger provides a powerful JavaScript animation library for more complex animations. It is important to consider accessibility and provide reduced motion fallbacks. CodePen and GreenSock's documentation are valuable resources for learning and inspiration in creative coding.
Las animaciones en React Native deben ser divertidas
React Advanced Conference 2022React Advanced Conference 2022
28 min
Las animaciones en React Native deben ser divertidas
This talk is about animations in React Native, specifically focusing on React Native Reanimated. It covers the use of interpolations and extrapolations in animations, animating items in a carousel or list, sticky elements and interpolation, and fluidity and layout animations. The talk provides valuable tips and tricks for creating performant animations and explores the use of math formulas for natural movements.
Animación y Vue.js
Vue.js London Live 2021Vue.js London Live 2021
32 min
Animación y Vue.js
Today's Talk covers animation in Vue JS apps, including CSS animations, JavaScript animations using the GSAP library, and handling multiple elements with transition groups. The Talk also discusses different kinds of movements, state transitions, and animating numbers and SVGs. Overall, it provides a comprehensive overview of animation techniques and tools for enhancing Vue JS apps.
Animaciones con JS
JSNation 2022JSNation 2022
19 min
Animaciones con JS
Today's talk is about animations in Javascript, covering frame rates and different methods like CSS transitions and animations. JavaScript provides more control over animations, allowing interpolation and simulation of real-world scenarios. Different approaches to animating a box from zero to 100 pixels are discussed, including for loops, timers, and the web animations API. Request Animation Frame is highlighted as a solution for consistent and smooth animations. The Web Animations API is introduced as a powerful tool alongside CSS animations and transitions, although it has limited browser support.

Workshops on related topic

Cómo crear arte generativo increíble con código JavaScript simple
JS GameDev Summit 2022JS GameDev Summit 2022
165 min
Cómo crear arte generativo increíble con código JavaScript simple
Top Content
WorkshopFree
Frank Force
Frank Force
En lugar de dibujar manualmente cada imagen como en el arte tradicional, los artistas generativos escriben programas que son capaces de producir una variedad de resultados. En esta masterclass aprenderás cómo crear arte generativo increíble usando solo un navegador web y un editor de texto. Comenzando con conceptos básicos y avanzando hacia la teoría avanzada, cubriremos todo lo que necesitas saber.