(Más fácil) Visualización interactiva de datos en React

Rate this content
Bookmark

Si estás construyendo un tablero de control, una plataforma de análisis o cualquier aplicación web donde necesites dar a tus usuarios una visión de sus datos, necesitas hermosas, personalizadas, visualizaciones de datos interactivas en tu aplicación React. Pero construir visualizaciones a mano con una biblioteca de bajo nivel como D3 puede ser un gran dolor de cabeza, que implica reinventar la rueda. En esta charla, veremos cómo el desarrollo de visualización de datos puede ser mucho más fácil gracias a herramientas como Plot, una biblioteca de dataviz de alto nivel para una rápida y fácil creación de gráficos, y Observable, un entorno de prototipado de dataviz reactivo, ambos del creador de D3. A través de ejemplos de codificación en vivo, exploraremos cómo los refs de React nos permiten delegar la manipulación del DOM para nuestras visualizaciones de datos, y cómo la funcionalidad de incrustación de Observable nos permite reutilizar fácilmente las visualizaciones construidas por la comunidad para nuestros propios datos y casos de uso. Al final de esta charla, sabremos cómo obtener una hermosa, personalizada, visualización de datos interactiva en nuestras aplicaciones con una fracción del tiempo y esfuerzo!

Anjana Vakil
Anjana Vakil
27 min
22 Oct, 2021

Video Summary and Transcription

Esta charla trata sobre la visualización interactiva de datos en React utilizando la biblioteca Plot. Plot es una biblioteca de alto nivel que simplifica el proceso de visualización de datos al proporcionar conceptos clave y valores predeterminados para las decisiones de diseño. Se puede integrar con React utilizando hooks como useRef y useEffect. Plot permite la personalización y admite características como la clasificación y la adición de marcas adicionales. La charla también discute las preocupaciones de accesibilidad, el soporte SSR y compara Plot con otras bibliotecas como D3 y Vega-Lite.

Available in English

1. Introducción a la visualización de datos interactiva en React

Short description:

Hola, amigos. ¿Cómo les va? Soy Anjana Vakil, una defensora de los desarrolladores en Observable. Hoy, hablaré sobre la visualización de datos interactiva en React. Visualizar datos puede ayudar a descubrir significado, patrones e insights. La visualización de datos es valiosa para las aplicaciones web, los paneles de control y los insights del usuario. Es un campo amplio, pero podemos construir visualizaciones efectivas sin aprender todo. Exploraremos cómo hacer una aplicación de visualización de datos reactiva en React usando la trama Observable.

Hola, amigos. ¿Cómo les va? Es muy bueno ver sus caras. Es muy bueno verlos a todos aquí. Dios mío. Hola. Soy Anjana Vakil, una defensora de los desarrolladores en Observable y estoy muy feliz de estar aquí con todos ustedes, ya sea en persona o en la transmisión en vivo.

¿Qué tal, todos? Estoy realmente emocionada de hablar con todos hoy sobre la visualización interactiva de data en React. Las diapositivas de esta presentación y todos los enlaces y todo están en esa URL en observableHQ.com y trataré de tuitear eso después de la charla también.

Así que soy relativamente nueva en el mundo de la visualización de data como desarrolladora de software, desarrolladora de JavaScript pero aquí hay algunas cosas que he estado aprendiendo sobre la visualization de data. Una cosa es que cuando tienes un montón de data, visualizarla, ponerla frente a los ojos de las personas de una manera efectiva puede ser la forma más impresionante de descubrir rápidamente el significado real de esa data, ver patterns en ella, obtener insights reales, poder tomar decisiones basadas en ella. Eso significa que la visualización de data es un componente extremadamente útil en muchos tipos diferentes de aplicaciones web.

Entonces, por supuesto, cualquier tipo de panel de control que puedas estar construyendo probablemente va a tener una visualización de data involucrada. Cualquier momento en que estés tratando de dar a tus usuarios insights sobre su propia data en tus plataformas. Levanta la mano si tuviste que construir algún tipo de visualización de data en alguna de tus aplicaciones. Muchas manos. Y estoy segura de que también hay muchas manos en el ciberespacio. Así que esto significa que también es una habilidad muy valiosa para tener en tu currículum o como parte de tu portafolio de desarrollador. Así que algo que vale la pena aprender un poco. Sin embargo, la visualización de data es un campo muy, muy amplio. Es algo en lo que podrías pasar toda tu vida y career profundizando y obteniendo una disertación, escribiendo una disertación y convirtiéndote en un experto y nunca llegar al fondo de. ¿Eso significa que para construir visualizaciones efectivas en mis aplicaciones, tengo que, además de todas las cosas regulares de la web y React y JavaScript que necesito saber, también tengo que aprender sobre análisis estadístico y teoría del color y percepción visual humana y todas estas cosas diferentes. Eso suena realmente abrumador y difícil. ¿Cómo puedo construir una buena visualization sin tener que rededicar mi vida a aprender todo lo que hay que saber sobre la visualización de data.

Así que puede parecer realmente desalentador, puede parecer realmente difícil. Lo que esperamos explorar hoy en el corto tiempo que tenemos juntos es cómo podemos hacer una aplicación de visualización de data interactiva reactiva en React sin tener que aprender todo lo que hay que saber sobre la visualización de data. ¿Cómo puedo apoyarme en los hombros de gigantes y poner en marcha esta visualización de data lo más rápido posible. Lo que tenemos aquí y esto es lo que vamos a construir hoy si los dioses de la demostración están con nosotros es una simple visualization de la frecuencia de diferentes letras en el idioma inglés y es algo que yo como usuario puedo ordenar de la manera que quiera verlo. Así que puedo ordenarlos por la frecuencia descendente y ver que está un poco cubierto aquí pero la E es la letra más frecuente. Así que esto es lo que vamos a intentar construir y esperamos ver cómo no necesitamos reinventar la rueda para hacerlo. La herramienta que vamos a usar para este trabajo es una nueva biblioteca de DataVis de código abierto relativamente nueva llamada Observable plot.

2. Introducción a la biblioteca Plot

Short description:

Plot es una biblioteca de alto nivel creada por la misma persona que creó D3. Te permite crear visualizaciones significativas y personalizables rápidamente. Plot emplea una gramática de gráficos, una forma de describir y sistematizar la creación de gráficos. Proporciona conceptos clave como marcas, escalas, transformaciones y facetas para crear gráficos poderosos y complejos. Los valores predeterminados de la biblioteca toman decisiones de diseño por ti, simplificando el proceso de visualización de datos.

Entonces, Plot, al igual que Observable, fue creado por la misma persona que creó la biblioteca D3 si la gente ha oído hablar de eso o se ha encontrado con eso, viendo algunos asentimientos. Entonces, Mike Bostock, quien también es CTO en Observable y algunos de nuestros otros compañeros de equipo en Observable crearon esta increíble biblioteca de DataVis que se lanzó de código abierto a principios de este año.

Y Plot es una biblioteca de muy alto nivel. Por lo tanto, te permite obtener rápidamente un gráfico significativo en funcionamiento al mismo tiempo que te da la flexibilidad para poder personalizar y construir exactamente el tipo de visualization que necesitas para tus propósitos en lugar de elegir uno de un conjunto limitado de opciones listas para usar.

Entonces, cómo hace esto es gracias a una API muy simple y muy poderosa que se basa en la noción de algo llamado una gramática de gráficos. Entonces, esta es una forma de pensar en describir y sistematizar cómo podemos armar un gráfico, prácticamente cualquier tipo de gráfico que podamos imaginar, a partir de unos pocos conceptos básicos.

Y esto es algo que ha estado en el mundo de la data vis durante mucho tiempo, por lo que tenemos expertos y toneladas de décadas de investigación en data vis incorporadas en esta gramática de gráficos. Y luego, PLOT emplea esta gramática de gráficos, pero la implementa sobre D3. Entonces, también tenemos a Mike y al resto del equipo de D3, una década de experiencia construyendo visualizaciones basadas en SVG para la web, todo incorporado en esta biblioteca.

Entonces, es esencialmente como tener un pequeño amigo experto en data vis en tu bolsillo que puede ayudarte a descubrir el mejor gráfico para construir. Y cómo hace eso es por medio de algunos conceptos clave. No vamos a entrar en detalle en todos ellos. Podrías leer todo sobre ello. Pero hay cosas como marcas, que son los elementos visuales que vemos en la página. Esto podría ser una barra. Podría ser una línea. Podría ser puntos en un gráfico de dispersión. Hay escalas, que son esencialmente funciones que transforman los valores que tengo en mi conjunto de data, por lo que en mi espacio de data, en valores en la representación visual real.

Entonces, esto podría ser tomar esos números de frecuencia y convertirlos en píxeles de cuán alta será la barra en la pantalla. Un par de características de las que no vamos a hablar mucho, pero son súper útiles para crear visualizaciones más personalizadas, cosas como transformaciones, por lo que podemos hacer agregaciones, como suma, media, ese tipo de cosas, y facetas, que te permiten tomar una data vis y dividirla en subvisualizaciones más pequeñas que se centran en un subconjunto de la data.

Entonces, con estos pocos conceptos, que no tardan mucho en entender, puedes crear gráficos realmente poderosos y realmente complejos que se ajusten completamente a lo que sea que necesites. Pero al mismo tiempo, puedes permitir que los valores predeterminados incorporados en Plot tomen muchas de las decisiones por ti, para que no necesites aprender todo lo que hay que saber sobre cómo organizar perfectamente las cosas en la pantalla.

Entonces, echemos un vistazo a cómo se siente realmente escribir algo de Plot. Espero que la gente pueda leer esto bien en la parte de atrás. Voy a tomar eso como un sí. Vale. Entonces, lo que tengo aquí es algo de data sobre estas letras y su frecuencia relativa. Entonces, tengo una matriz de pequeños objetos de data, datos, que tienen una propiedad de letra y frecuencia. Para crear un Plot, es una simple llamada al método Plot en este objeto Plot con P mayúscula que va a crear un SVG. Y este SVG es súper aburrido.

3. Visualizando Datos con Plot

Short description:

Visualicemos algunos datos utilizando el método bar Y de Plot. Mapea automáticamente las propiedades de los datos al SVG. Plot toma decisiones informadas sobre el diseño, las etiquetas y las marcas. Es posible la personalización, como la clasificación y la inversión del orden. Se pueden agregar marcas adicionales para mayor flexibilidad.

Es solo un SVG en blanco que no hace nada. Así que vamos a solucionar eso. Vamos a visualizar algunos data aquí.

Mencioné muy brevemente que Plot tiene una noción de marcas, los elementos visuales que vemos en la página. Aquí quiero hacer un gráfico de barras. Puedo hacer eso llamando al método bar Y en Plot, que es porque vamos a estar haciendo estas barras verticales. También hay un bar X para horizontal. Eso va a tomar los data que quiero visualizar, en este caso mi pequeña matriz de data. Y luego voy a pasar un objeto que le dice a Plot cómo mapear las propiedades de los data a las propiedades del SVG real en la pantalla. En este caso, le vamos a decir, oye, toma el eje X y úsalo para mostrar la propiedad de la letra en mis data. Y luego en el eje Y, quiero que pongas la propiedad de frecuencia.

Y una vez que evalúo eso, boom, ya tengo un gráfico significativo. Y Plot hizo un montón de trabajo pesado aquí que de otra manera habría tenido que pensar y construir yo mismo. Así que, por ejemplo, averiguar cómo organizar todo en ambos ejes, averiguar cómo será la barra más alta en mi visualization y configurar el eje Y de manera adecuada, añadir etiquetas, añadir las marcas en los lugares correctos, etcétera, etcétera. Así que Plot está tomando muchas decisiones realmente bien informadas por mí detrás de escena. Y sin embargo, puedo personalizarlo como quiera.

Así que, por ejemplo, por defecto, simplemente está organizando todas estas letras en el orden que aparecieron, así que en orden alfabético en este caso. Pero si quiero cambiar eso, en mi marca bar Y, puedo pasar una propiedad de ordenación, y decir, oye, Plot, ordena las cosas en el eje X por su valor en el eje Y. Boom. Lo hace por mí. No tengo que preocuparme por los valores en los data. Plot lo averiguará por mí. Y de la misma manera, si digo que en realidad quiero verlo en el otro orden, el orden descendente, puedo simplemente añadir un reverse true. Y ahí vamos.

Así que ya estamos empezando a tener un gráfico no tan trivial aquí construido a partir de, de nuevo, una API super declarativa. Y hay otras configuraciones que puedo poner en el gráfico en sí. Como, si quiero añadir una cuadrícula en el eje Y, puedo hacerlo para que sea un poco más fácil ver cuáles son los valores de esas barras a lo largo de la dimensión horizontal. Y puedo combinar diferentes tipos de marcas. Aquí es donde, de nuevo, no estamos limitados por un cierto conjunto de visualizaciones dadas de fábrica. Puedo añadir marcas adicionales.

4. Creando un Gráfico Significativo

Short description:

Imagina que todas las letras en inglés se usaran de igual manera. Al agregar una línea recta en un cierto valor en el eje Y, podemos comparar la frecuencia de diferentes letras con esa frecuencia uniforme. Con solo unas pocas líneas de código, podemos crear un gráfico significativo y personalizarlo según sea necesario.

Quizás quiero mostrar, está bien, imagina que todas las letras en inglés se usaran exactamente de la misma cantidad. ¿Cuál sería esa frecuencia? Entonces, pongamos una regla, una línea recta, en un cierto valor en el eje Y para que vaya recta a través para que podamos comparar cuánto más frecuentes o menos frecuentes son diferentes letras a esa frecuencia uniforme. Entonces puedo llamar al método rule Y aquí. En este caso, voy a pasar solo un valor, que va a ser lo que esperaría que fuera esa frecuencia si todas las letras fueran las mismas, que es uno sobre el número de letras que tengo. En este caso son 26. Y si recuerdo una coma aquí, Plot dibujará esa línea para mí. Y, por supuesto, ahora mismo no es el gráfico más visualmente emocionante. No tenemos ningún color, pero también puedo cambiar eso agregando opciones de configuración que se basan en gran medida en propiedades que podríamos conocer de los SVGs. Entonces puedo establecer, por ejemplo, el color del trazo a naranja. O tal vez quiero hacerlo un poco más ancho, así que estableceré un ancho de trazo de quizás tres. Entonces ahora puedo ver que, oh, como L está a punto de romper incluso, y C es mucho menos frecuente que lo normal, y E está muy por ahí, gran outlier. Entonces ahora tenemos un ejemplo trivial, estas frecuencias de letras, a menos que seas un lingüista de fondo, como yo, en cuyo caso es muy emocionante. Pero podemos ver que, en solo unas pocas líneas de code y probablemente más minutos de los que debería haber tomado porque he estado hablando, pero en solo unos minutos y unas pocas líneas de code, tenemos un gráfico significativo, y sin embargo, no es nada fuera de lo común que simplemente tuve que tomar los valores predeterminados de. Puedo configurarlos como lo vea conveniente.

5. Integrando Plot con React

Short description:

Al usar Plot, podemos crear un SVG con barras, ticks y líneas sin tener que codificarlos manualmente en nuestra aplicación de React. Plot manipula el elemento SVG y renderiza el gráfico utilizando hooks como useRef y useEffect. Estos hooks permiten que React delegue la manipulación del DOM a Plot y maneje el renderizado y las actualizaciones.

Bueno. Entonces, probablemente estés diciendo, está bien, pensé que estábamos en una conferencia de React. ¿Dónde está sucediendo el React? ¿Cómo hacemos esto con React? Entonces, lo que Plot está haciendo, como dijimos, es crear un SVG con todas estas barras, ticks y líneas, etc. No quiero tener que codificar eso manualmente en mi aplicación de React. Así que lo que voy a hacer es dejar que Plot manipule su pequeño elemento SVG y lo llene con todo el contenido del gráfico que quiere dibujar. Y para permitir que React delegue esa manipulación del DOM a Plot, vamos a usar un par de hooks útiles. Use ref, que nos va a permitir conectarnos a un nodo del DOM en el que Plot puede hacer su trabajo. Y use effect, que es donde realmente vamos a dejar que Plot haga el renderizado de ese SVG y cualquier actualización cuando cambie el estado. Luego, por supuesto, tenemos que recordar limpiar después de nosotros mismos.

6. Conectando Plot a la Aplicación

Short description:

Importemos Observable Plot en nuestro proyecto y creemos un componente llamado LetterVis para mostrar un div vacío. Pasaremos los datos como una prop y conectaremos Plot al div usando useref. Finalmente, usaremos useEffect para renderizar el gráfico de barras.

Bien. Entonces, si los dioses de la demostración están con nosotros, vamos a code sandbox e intentemos hacer una aplicación de gráficos rápidamente. Lo que tengo aquí, y, de nuevo, espero que la gente pueda ver en la parte de atrás, lo que tengo aquí es, básicamente, una aplicación estándar de crear React. Todo lo que he hecho es cambiar el título, y tengo un par de cosas listas para importar solo para ayudarnos aquí.

Lo primero que quiero hacer es traer Observable Plot a mi proyecto como una dependencia para que pueda añadirlo como Observable HQ slash Plot. Oh, gracias, Code Sandbox, por hacer eso tan fácil. Increíble. OK, así que ahora tenemos, ahora podemos importar este Plot con P mayúscula de Observable HQ Plot. OK, así que un par de otras cosas que tengo aquí, tengo mis data. Estos mismos datos de letras que acabamos de ver, y más tarde vamos a añadir un pequeño desplegable para explorar esa Reactivity. Así que déjame traer mis data también aquí. Ahora dijimos que queremos permitir que Plot haga su propia cosa en un div en nuestra aplicación. Así que voy a empezar a crear un componente aquí. Podemos llamarlo, no sé, lo llamaremos LetterVis por ahora. Va a ser la cosa más aburrida de todas, va a devolver un div vacío. OK, aún no es emocionante. Y luego podremos insertar esto en nuestra aplicación aquí. Y luego probablemente vamos a querer visualizar algunos data, así que ¿por qué no paso esos data como una prop aquí, y puedo pasarla aquí. Así que ahora mismo estamos cargando estos datos de letras codificados desde este archivo, pero probablemente estarías trayendo tus data de donde sea, tu API, lo que sea, no vamos a cubrir esa parte.

OK, así que ahora necesito conectar Plot a este div aquí. Y para eso, nuestro amigo useref entra en juego. Así que déjame agarrar useref, y también vamos a usar un par de otros hooks, useEffect y más tarde usestate. Y vamos a crear una nueva referencia donde Plot puede hacer su cosa. Así que puedo llamar a esto plotRef y simplemente llamar a useref. Esto va a empezar como un pequeño objeto que tiene una propiedad actual, que va a ser establecida en null al principio, pero si lo conecto a este div, plotRef aquí, ahora cuando React renderiza este div, plotRef.current va a ser el nodo real, este nodo div en el DOM, al que luego puedo decirle a Plot que haga su cosa. Dentro de un useEffect es donde voy a hacer que eso suceda. Así que vamos a poner nuestro useEffect en marcha aquí. Oop. Y lo que vamos a hacer es agarrar nuestro gráfico de barras de aquí. ¡Doop doop da do!

7. Creando el Gráfico de Barras y Limpieza

Short description:

Doop doop da do. El gráfico de barras será este plot.plot. Para capturar el elemento SVG e incluir datos, añade datos a las dependencias de useEffect. Deja que plot haga su trabajo renderizando el div y luego usa plot bar chart para mostrar el gráfico. Limpia después de usar use ref devolviendo una devolución de llamada que elimina el gráfico de barras del DOM. Añade márgenes para mejorar el diseño y hacer el gráfico más legible.

Control C. Doop doop da do. El gráfico de barras será este plot.plot.

Bien, así que exactamente lo que hice antes, ahora vamos a capturar ese elemento SVG y, oh sí, data está involucrado aquí. Así que voy a añadir data a las dependencias de este useEffect aquí. Vale, ahora, nada está en la pantalla porque aún no he dejado que plot haga su trabajo, así que vamos a hacer que eso suceda. Como dijimos antes, una vez que React ha renderizado el div allí y eso es después de eso es cuando este useEffect va a ejecutarse, voy a tener una referencia a plot ref.current es ese div. Lo que puedo hacer es dejar que plot bar chart se siente justo dentro de eso. Ahora, estamos obteniendo algunas cosas en la pantalla excepto demasiadas cosas. Uh-oh, porque no estoy limpiando después de mí mismo. Esta es la trampa. Si estoy usando use ref, estoy, para citar a Rachel ayer, escapando, usando la escotilla de escape de React. No obtengo todas las cosas bonitas que React normalmente hace por mí como limpiar después de mí como si fuera mi criada. En cambio, tengo que limpiar después de mí mismo. Oh, no, qué desgracia es para mí. No es tan malo, sin embargo, porque puedo devolver una devolución de llamada, que esencialmente hace la operación opuesta de este append. Podemos tomar nuestro gráfico de barras y eliminarlo del DOM. Este es el compromiso con si quiero que plot haga el trabajo pesado de juntar todo este gráfico para mí para que no tenga que codificar a mano los pequeños elementos rect y lo que sea dentro de un SVG, esto es todo lo que tengo que hacer. Tengo que use ref. Pero recuerda que como estoy escapando de React, también tengo que limpiar después de mí mismo y ser un buen vecino. Bien. Así que ahora, si refresco mi aplicación aquí, esperemos, solo tenemos un gráfico en marcha. Bien. Excelente. Ahora, tenemos algunos problemas con el diseño aquí. Añadamos algunos márgenes, lo que puedo hacer en plot muy rápido solo para arreglar eso un poco. Y esto esperemos que lo haga más legible.

Bien. Así que, aquí lo tenemos. Déjame ocultar esto. Estamos llegando allí.

8. Añadiendo un Selector de Orden para Personalización

Short description:

Hemos añadido un selector de orden para permitir a los usuarios personalizar su visualización de datos. Al elegir diferentes opciones, los usuarios pueden explorar conjuntos de datos y encontrar insights más fácilmente. El componente desplegable permite a los usuarios seleccionar opciones como alfabético, frecuencia descendente y frecuencia ascendente. Conectamos el desplegable al gráfico de trama utilizando un hook de estado y un controlador onchange. La opción seleccionada actualiza el estado, pero aún no la hemos incorporado en el use effect.

Tenemos un gráfico. Lo hicimos. Y de nuevo, el patrón que estamos utilizando es tomar este use ref, conectarlo a nuestro activo, y luego en el use effect, dejar que plot o cualquier biblioteca de manipulación del DOM que podrías estar utilizando haga su cosa, añada su SVG y luego lo elimine cuando queramos actualizar la próxima vez.

Muy bien. Entonces, ahora, para la parte de reactivity. ¿Estás conmigo? Vamos a hacer ahora este pequeño selector de orden para que mi usuario pueda decidir cómo le gustaría ver mejor su información, lo cual es realmente poderoso. Cuando puedes tener tus manos en los data y jugar con ellos, y cambiar la visualization de ciertas maneras para que puedas explorar un conjunto de datos, eso hace que sea aún más fácil encontrar esos insights y esos patterns.

Así que en este simple ejemplo, vamos a añadir ese pequeño desplegable, para el cual tengo un pequeño componente en este otro archivo. Voy a importarlo, y luego crear un desplegable dentro de mi gráfico de letras. Para hacer eso, simplemente voy a traer mi componente desplegable. Puedo darle un título, llamarlo ordenar por. Puedo darle algunas opciones, un array de valores para elegir. El predeterminado era alfabético, así que mantengamos eso ahí. Y luego tendremos frecuencia descendente y frecuencia ascendente, en caso de que mis usuarios quieran usar cualquiera de esas. Si recuerdo cerrar todas mis cosas y hacer esto simétrico... Esperemos... Vale.

Así que ahora tenemos una pequeña cosa en la pantalla que permite a la gente usar este widget de selección para elegir una opción. Simplemente no está haciendo nada todavía, porque no lo hemos conectado al gráfico de trama. Así que arreglemos eso. Así que antes había traído un hook de estado usado, nuestro buen viejo amigo. Así que lo que podemos hacer es crear una propiedad de orden y un set sort usando nuestro hook de estado usado. Podemos darle el valor predeterminado de alfabético solo para empezar con algo. Y luego lo que puedo hacer en mi desplegable es pasar un pequeño controlador onchange, que va a tomar el evento de cambio donde alguien eligió una opción diferente en el desplegable y va a establecer el orden a lo que sea que hayan elegido. Así que ahora esperemos que esto esté actualizando nuestro estado, pero no hay ningún efecto visual de eso porque aún no hemos llevado el estado a nuestro use effect. Así que hagamos eso. Así que lo primero que quiero hacer es traer mi variable de orden aquí a las dependencias de el use effect. Y luego, por ejemplo, aquí añadimos esa propiedad de orden con este pequeño objeto de configuración. Ahora podemos tomar decisiones sobre cómo queremos que se vea esta propiedad en función del valor de el orden. Así que si el orden es alfabético, puedo decidir no hacer nada.

9. Creando un Gráfico Declarativo

Short description:

Al usar una API declarativa, Plot nos permite crear un gráfico que se actualiza de manera reactiva sin manipularlo manualmente. Podemos centrarnos en declarar la apariencia deseada del gráfico y dejar que Plot se encargue del dibujo. Esto facilita la toma de decisiones basadas en el estado de la aplicación.

Y luego, si tengo un orden no alfabético, puedo elegir el orden, si esto será invertido o no, en función de si ese valor es descendente. Si lo es, entonces invierte las cosas. Y si no, entonces no. Así que ahora, si no me he equivocado, que es un gran si, tengo un gráfico que se actualiza de manera reactiva, pero está escrito de manera declarativa en mi aplicación. Así que espero que todos ustedes sientan, como yo, que debido a esta API declarativa que ofrece Plot, porque no estoy manipulando manualmente el gráfico de manera imperativa, simplemente estoy declarando, esto es lo que quiero que parezca el gráfico. Plot, tú averigua cómo dibujarlo. No voy a preocuparme por eso. Debido a eso, se siente bien con esta aplicación reactiva. Porque puedo tomar decisiones igual que lo haría en otro componente para decidir qué elemento renderizar en función del estado de mi aplicación.

10. Construyendo una Aplicación Reactiva de Visualización de Datos con Plot

Short description:

Hicimos una aplicación reactiva de visualización de datos con Plot, mostrando la facilidad de construir aplicaciones personalizadas reactivas y responsivas. La API declarativa de la biblioteca maneja las escalas y mapeos, al tiempo que permite una fácil personalización.

Lo hicimos. Creamos en no mucho tiempo una aplicación reactiva de dataviz. Es... No sé con qué frecuencia vamos a querer mirar la frecuencia relativa de las letras en el idioma inglés. De nuevo, a menos que seas un nerd del lenguaje, nerds como yo. Pero espero que esto te dé una idea del tipo de aplicaciones reactivas y responsivas personalizadas que puedes construir con una biblioteca como Plot. Y su API declarativa. Genial.

Muy bien. Gracias, dioses de la demostración. Vale... Así que casi nos quedamos sin tiempo aquí. Pero solo un par de palabras más. Así que espero que esto haya parecido bastante fácil. ¿Qué piensan todos ustedes? Quiero decir, no tuvimos que pensar en las escalas. No tuvimos que pensar en los mapeos entre los valores de mis data reales y el diseño de las barras en la pantalla. Plot se encargó de todo eso por nosotros. Y sin embargo, pude sobrescribir los valores según lo necesitaba. ¿Podría ser aún más fácil insertar un gráfico en mi aplicación? Bueno, Observable, ObservableHQ es un entorno de prototipado y visualización de data reactiva basado en JavaScript en el navegador.

11. Incrustando Visualizaciones y Personalizando Gráficos

Short description:

Puedes encontrar toneladas de ejemplos en el sitio, incluyendo la biblioteca plot y otras bibliotecas como D3. Toma el código incrustado o el código del componente React de cualquier cuaderno Observable para integrar visualizaciones en tu aplicación. Se han lanzado funciones reutilizables de código abierto para generar gráficos D3. Puedes personalizar los gráficos utilizando el mismo patrón que antes. Plot es una biblioteca de alto nivel que permite la creación de gráficos convenientes y personalizables. Tiene una API declarativa y funciona bien en aplicaciones Reactivas. Useref y UseEffect se pueden utilizar para delegar la manipulación del DOM. Hay recursos disponibles para leer más sobre Plot y D3.

Puedes explorar el sitio y encontrarás toneladas de ejemplos porque también es una increíble community de muchos creadores que construyen las visualizaciones más impresionantes. No sé cómo lo hacen. Así que hay ejemplos asombrosos, no sólo con la biblioteca plot, sino con otras bibliotecas como D3.

Y de cualquier cuaderno Observable, puedes obtener un fragmento de código incrustado para insertar un pequeño elemento iFrame autónomo, plunk, hecho, o para generar el código del componente React que necesitarías si quieres pegarlo en tu aplicación y manipularlo como quieras para integrarlo con el resto de tu aplicación. Así que eso es bastante fácil. Súper emocionante, hace apenas una semana, como hace cinco minutos, lanzamos algunas funciones reutilizables de código abierto que puedes llamar para generar un gráfico completo basado en D3. Así que esto es una especie de nuevo desarrollo en los ejemplos de D3 donde no tienes que averiguar cómo replicar de manera imperativa estos geniales gráficos de D3 que ves por ahí. Hay un montón de diferentes funciones como histogramas, diagramas de arena, diagramas de árboles, todo tipo de cosas diferentes. Puedes encontrar todos los ejemplos en observablehq.com.

Y utilizando exactamente el mismo patrón que acabamos de ver, puedes insertar esto en una aplicación React. Así que teniendo un patrón useRef y useEffect que acabamos de ver, puedes llamar a una función de histograma y obtener un histograma instantáneo, personalizarlo como quieras, hacerlo rojo, hacerlo lo que sea, y de nuevo, utilizando ese mismo patrón useUseRef, useUseEffect, limpiar después de ti mismo que acabamos de ver. Y de nuevo, estas son ambas formas muy fáciles de aprovechar todos los increíbles años y décadas de experiencia que estos impresionantes desarrolladores de data viz tienen y que han sido incorporados en estos ejemplos y estas APIs, estas bibliotecas, para no tener que aprender todo eso nosotros mismos. Así que podemos obtener un gráfico genial que hace lo que ayuda a nuestros usuarios a entender los data que queremos que entiendan. Vale.

Así que un resumen súper rápido, porque creo que me he pasado un par de minutos, lo siento, es que plot lo que hemos visto es una biblioteca de alto nivel suficiente para que puedas obtener un gráfico realmente conveniente en funcionamiento con un par de líneas de código y sin embargo no te encasilla en ejemplos específicos. Puedes personalizarlo basándote en la combinación de estos pocos conceptos diferentes. Como tiene una API declarativa, se siente muy bien en una aplicación Reactiva. Fue diseñado para ser utilizado en un contexto Reactivo en Observable pero React es otra aplicación perfectamente buena. Así que Useref y UseEffect son nuestros amigos si queremos delegar la manipulación del DOM a otra biblioteca para no tener que codificar todo a mano. Y los ejemplos que vimos con los gráficos D3 y otros ejemplos que puedes encontrar en Observable, puedes incorporarlos también en tus aplicaciones. Así que muchas gracias, hay un montón de lecturas adicionales enlazadas en las diapositivas. Si quieres profundizar más en plot, si quieres profundizar más en D3 también, hay muchos buenos recursos disponibles. Y te agradezco mucho que estés aquí conmigo. Ha sido genial hablar con todos ustedes. Muchas gracias. Mis compañeros de equipo en Observable, gracias. Gracias. Gracias. Gracias. Gracias. Por favor, toma asiento.

QnA

Preguntas y Accesibilidad

Short description:

Por favor, toma asiento. Responderemos algunas preguntas en breve. Una pregunta es sobre la prueba de estrés de Plot con muchos puntos de datos y cualquier problema de rendimiento con SVG. Plot se basa en D3, que ha sido optimizado durante años, por lo que debería manejar grandes gráficos bien. Plot está vinculado a la renderización SVG pero se podría construir una biblioteca basada en canvas utilizando los mismos principios. Las pautas de accesibilidad aún están en proceso de elaboración.

Por favor, toma asiento. Así que tenemos un poco de una situación incómoda con la programación donde la transmisión en vivo se interpondrá en un conjunto diferente de programación en un par de minutos. Pero también has roto el récord de preguntas, creo que tienes las preguntas más de cualquier charla hasta ahora. No sé si es una buena señal o una mala señal. Yo tampoco lo sé. Pero vamos a responder algunas de esas preguntas para las personas que están aquí en la sala Así que siéntete libre, en un par de minutos, de ir a tomar un café durante el medio hora de descanso que vamos a tener, o quedarte aquí y vamos a pasar por las preguntas durante unos 10 minutos. ¿Te parece bien? Seguro. Genial.

Así que la pregunta número uno que tenemos aquí es, ¿se ha sometido a Plot a pruebas de estrés con muchos puntos de data, y si es así, encontraste algún problema de performance con SVG? Esa es una gran pregunta. Así que si estás redibujando un SVG cada vez, probablemente tendrás un poco más de dificultad que con 26 letras como nosotros. Sin embargo, Plot se basa en D3. Y como la gente puede saber, D3 definitivamente ha pasado 10 años optimizando cosas como la actualización de data cuando cambia para que sólo necesites actualizar las partes que importan. Y así tienes esencialmente todas esas ventajas de D3 subyacentes a Plot. Así que no estoy seguro, ya que Plot es tan nuevo, no estoy seguro de cuál es el límite superior de cuál es el Plot más grande que se ha hecho. Esa es una buena pregunta que le haré a mi equipo. Pero espero que el hecho de que D3 haya estado trabajando en ese problema durante mucho tiempo se preste bien para intentar hacerlo, no de la manera más lenta posible, digamos. Bien. Y tal vez como seguimiento a eso, ¿hay algo en Plot que lo vincule a la renderización SVG o podría usarse con un renderizador basado en canvas también? Así que Plot se basa en SVG. No creo que lo haría. Creo que tendrías que volver a la tabla de dibujo para conseguir que las cosas se rendericen en canvas. Sin embargo, sabes, esto es, de nuevo, un tipo de enfoque para implementar esta idea de un gramática de gráficos. Así que eso es una especie de sistema formal de nivel superior para representar los diferentes tipos de gráficos que podemos hacer a partir de estos conceptos clave. Así que podría imaginar totalmente y tal vez hay algunos por ahí, una biblioteca basada en canvas que toma los mismos principios y los traduce en un canvas en lugar de elementos SVG. Bien. Solía trabajar en Victory en su día, así que tuvimos que luchar mucho con los mismos problemas. Soy muy simpatizante con tu causa. Creo que la transmisión en vivo puede estar cortándose ahora, así que si todavía estás ahí, adiós. Continuaremos aquí en la sala un poco más.

Así que Andy H pregunta, ¿las visualizaciones de Plot pueden cumplir fácilmente las guidelines de accessibility? Esa es una gran pregunta. Definitivamente es algo en lo que todavía tenemos trabajo por hacer.

Accesibilidad y Contribuciones

Short description:

Plot es una biblioteca de código abierto que aún se encuentra en la fase beta. El equipo está trabajando activamente para abordar las preocupaciones de accesibilidad y agradece las contribuciones y comentarios. El objetivo es hacer que Plot sea más accesible y mejorar el campo de la visualización de datos basada en la web.

Afortunadamente, es todo código abierto, como mencioné, así que si te encuentras con obstáculos particulares de accessibility o cosas que aún no están en la biblioteca, porque se lanzó por última vez en primavera, por lo que todavía está en una fase beta de su vida. Todavía estamos resolviendo algunos de los problemas. Si tienes preguntas particulares o dolores de cabeza o obstáculos allí que te preocupan, te recomendaría saltar a GitHub.com y entrar en los problemas y ver qué es lo que ya ha sido señalado, tal vez hay cosas adicionales para las que te gustaría presentar un nuevo error, y ver cuáles son las posibilidades allí. Se agradecen las contribuciones. Sí, esa es la forma más amable de decir que se agradece el PR. Si no te gusta, puedes arreglarlo. Y se agradecen los comentarios, ya sabes, los problemas y plantear esas preocupaciones, eso es definitivamente algo que queremos escuchar. Definitivamente hay mucho impulso por parte del equipo para asegurarse de que Plot se está moviendo en una dirección de visualization más accesible. La Accessibility en Dataviz es, como, en sí misma un campo que, o un área que creo que el todo el campo de la web basada en el borde de Dataviz necesita abordar un poco mejor, así que es un trabajo en progreso, pero llegaremos allí.

Soporte de Plot para SSR

Short description:

El soporte de Plot para SSR es incierto. Utiliza D3 para crear elementos DOM, por lo que puede ser posible pero requiere una investigación más profunda. Para obtener información precisa, se recomienda consultar la documentación de Plot o discutirlo en el foro Observable.

Genial. Otra pregunta, quizás respuesta similar. ¿Plot soporta SSR? Buena pregunta. Me gustaría pasar eso a mi equipo, si es posible. Creo que, ya sabes, dado que esencialmente, Plot está usando D3 para crear los elementos DOM reales en la página. Creo que probablemente se puede hacer, pero no estoy completamente seguro de cuáles podrían ser los obstáculos o implicaciones de eso, así que diría que es una gran pregunta para plantear en la documentación de Plot o en conversaciones con el equipo observable en el foro. Así que tenemos un foro en talk.observablehq.com. Antes de decir algo incorrecto, investiguemos allí.

Comparando Plot con Otras Bibliotecas

Short description:

Plot se construye sobre D3, lo que lo convierte en parte de la familia de pensamiento de D3. Proporciona una forma más rápida de ponerse en marcha en comparación con D3. Vega-Lite es otra biblioteca que emplea un concepto similar de gramática de gráficos. Plot te permite crear tus propios gráficos combinando fácilmente diferentes tipos de marcas. Fue diseñado para funcionar bien en un entorno reactivo y ofrece documentación comparándolo con otras bibliotecas como D3 y Vega Lite.

Bien. Muy bien. Entonces la siguiente pregunta es un poco complicada y puedes tomarla como quieras, pero se ha hecho tantas veces que tenemos que hacerla. ¿Cómo compararías Plot con otras bibliotecas de gráficos de código abierto como Chart.js o Victory o lo que sea? Claro. Entonces, como dije, siendo nuevo en datavism, no estoy íntimamente familiarizado con estas otras bibliotecas. Sin embargo, diría que las principales distinciones de Plot son, de nuevo, que se construye sobre D3 y por lo tanto se basa en todo el pensamiento que se ha puesto en D3 durante los últimos 10 años. Así que D3 es esta poderosa biblioteca de data visualization de bajo nivel que tiene toneladas de capacidades. Así que el hecho de que Plot se base en eso lo convierte en parte de la familia de pensamiento de D3, por así decirlo. Así que si estás familiarizado con D3 pero a veces lo encuentras un poco demasiado de bajo nivel para tus necesidades y deseas que hubiera una forma más rápida de ponerse en marcha, Plot es el camino a seguir. Sin embargo, hay algunas otras bibliotecas de dataviz por ahí, por ejemplo, Vega-Lite es una para JavaScript basada en Vega que también emplea esta idea similar de una gramática de gráficos. Así que si has trabajado con cosas como el ggplot de R o Vega-Lite, podrías encontrar que venir a Plot se siente ergonómicamente similar porque emplea muchos de los mismos conceptos y marcos conceptuales frameworks. De nuevo, muchas bibliotecas de gráficos que he visto te dan algunas opciones de caja que tienen algunas propiedades configurables pero realmente no te permiten crear las tuyas propias o combinar diferentes tipos de marcas o combinar, ya sabes, combinar fácilmente líneas con barras o gráficos de puntos o cosas así. Pero la parte agradable de Plot es que no necesariamente te da gráficos de caja pero porque es tan rápido, esperamos que hayamos visto, y simple para agregar diferentes tipos de marcas a tus gráficos, te permite construir tu propio set de Lego, por así decirlo, con estas piezas recomponibles. Así que creo que eso es algo agradable. Y la otra gran cosa sobre Plot es que fue construido para vivir en un entorno reactivo. Así que los cuadernos observables son este tipo de entorno reactivo funcional en el navegador JavaScript Y Plot fue diseñado para funcionar muy bien con eso. Fue diseñado con su API declarativa para funcionar muy bien con la actualización de valores basada en entradas de usuario e interactividad. Así que creo que funciona muy bien en esos casos, también. Y hay alguna documentation en el sitio observable sobre comparaciones entre Plot y algunas otras bibliotecas como D3, como Vega Lite. Así que eso podría ser de interés para las personas que se preguntan sobre esas comparaciones.

Manejo de Puntos de Datos Agrupados y Personalización

Short description:

Puedes confiar en los valores predeterminados del gráfico para manejar la mayoría de los puntos de datos agrupados. Sin embargo, si los valores atípicos no son relevantes o quieres proporcionar opciones de personalización, puedes anular el dominio y el rango predeterminados. Esto te permite restringir el dominio para excluir valores atípicos y distribuir la visualización adecuadamente en la pantalla. Observables y D3 proporcionan ejemplos y herramientas para manejar desafíos de visualización de datos y explorar diferentes formas de visualizar datos. Puedes encontrar inspiración en los cuadernos y ejemplos existentes, e incluso integrarlos en tu propia aplicación. Observable es una herramienta poderosa para explorar y crear visualizaciones.

Sí. Genial. ¿Crees que puedes manejar un par de preguntas más? Estoy con cafeína y listo para continuar. Hagámoslo. No parece que estés listo en absoluto. Entonces, aquí hay una pregunta. Voy a elegir una que no es la primera en este momento, pero iré a la siguiente aquí, porque es una pregunta real sobre data visualization y no necesariamente sobre plot, pero me interesaría escuchar tus pensamientos al respecto. Entonces, ¿cómo resolverías el problema de tener una mayoría de puntos de data agrupados juntos sin mentirosos en el extremo extremo de scale? Entonces, por ejemplo, ¿el 99% de los valores entre 0 y 1, y luego el 1% de los valores en el primer percentil?

Sí, este va a ser uno de esos casos en los que puedes confiar en los valores predeterminados de el gráfico. Lo que plot podría hacer es mirar todos los puntos en tus data y decir, OK, aquí está el más pequeño, aquí está el más grande. Ese es esencialmente el dominio de mi problema aquí. Ese es el espacio de entrada. Y voy a mapear eso a mi rango, mi espacio de salida, que es el número de píxeles que tengo disponibles en la pantalla. Sin embargo, si para tu aplicación tal vez esos valores atípicos no son tan relevantes, o quieres que las personas tengan la opción de cambiar eso, lo que puedes hacer en plot es anular ese dominio predeterminado y rango a lo que se adapte a tus propósitos. Entonces, si quieres, digamos, restringir el dominio para excluir esos valores atípicos, puedes pasar una propiedad de dominio a plot y decirle los valores mínimos y máximos que realmente quieres que se visualicen, y luego hará todo el mapeo que necesita hacer para distribuir eso de manera adecuada en la pantalla. También puedes conectar eso a la interactividad en tu aplicación para, digamos, permitir a las personas elegir qué límites están mirando y acercar, por así decirlo, o alejar. Eso es probablemente a lo que terminarías cavando desde esa perspectiva. Creo que eso plantea un punto realmente bueno que mucha gente... Hay muchas preguntas aquí que son sobre el rendimiento en tiempo de ejecución, sobre la capacidad de sacudir el árbol, sobre cosas que tienen que ver con la naturaleza JavaScript de esta biblioteca. Pero fundamentalmente, los problemas de data visualization son problemas porque algunos data son simplemente más difíciles de visualizar. Y es por eso que realmente me gustan los Observables como herramienta, porque los cuadernos simplemente te permiten jugar con data y verlo de diferentes maneras, y encontrar formas intuitivas de ver algo en un conjunto caótico de data.

Sí, definitivamente. Y creo que también, de nuevo, en términos de no tratar de reinventar la rueda y tener que aprender todo sobre la teoría de data viz, husmeando en Observable y los diferentes cuadernos que la gente ha creado para ver algunos ejemplos de cómo las personas han manejado exactamente ese problema, cómo... De nuevo, también hay ejemplos en D3 de usar cosas como animation para ayudar a las personas a ver la forma en que el dominio está cambiando, o expandiéndose o contrayéndose, basado en acercar o alejar un gráfico. Entonces, esos tipos de ejemplos pueden ser realmente útiles para apuntarte en la dirección correcta, o en el caso ideal, puedes simplemente agarrarlo, incluyendo crédito donde corresponda, por supuesto, y pegarlo en tu aplicación, como dijimos antes. Entonces sí, espero que eso apunte a la gente en algunas buenas direcciones. Sí, quiero decir, no tengo ningún caballo en esta carrera, pero me encanta Observable como herramienta. He jugado mucho con él. Y me encanta simplemente navegar por las visualizaciones que otras personas han creado. Ya sabes, los conjuntos de data son simplemente increíbles. Lo sé.

Prototipado y Compartir con Observable

Short description:

Observable permite un prototipado rápido en React con retroalimentación instantánea. Puedes exportar e incrustar visualizaciones en tu propia aplicación, o compartirlas como aplicaciones independientes usando la URL. Además, puedes bifurcar los ejemplos de otras personas y personalizarlos para tu caso de uso.

Realmente a veces es alucinante, las cosas que la gente crea. Y lo bueno de Obs, creo que una de las cosas buenas de Observable es que también puedes incluir texto explicativo, puedes vincular una visualization y su interactividad a otras partes de una especie de página completa que describe los data, etc., por lo que es realmente agradable para las aplicaciones de narración de data. Y debido a esa funcionalidad de incrustación o exportación, puedes prototipar rápidamente en React porque todo es, como, retroalimentación instantánea, lo siento, puedes prototipar rápidamente en el entorno Reactivo de Observable que está construido con React. Puedes ponerlo en marcha rápidamente y luego cuando funciona, cuando te gusta cómo es, puedes exportarlo, incrustarlo en tu propia aplicación. Incluso puedes simplemente tomar la URL para enviar a la gente a ella como una especie de aplicación independiente, así que sí, es una forma bastante rápida de ponerse en marcha y también puedes bifurcar los ejemplos de otras personas para que no tengas que hacer todo el trabajo que ya hicieron. Simplemente ajústalo, para tu caso. Genial. Voy a hacer una última pregunta y luego tendremos que dejar a estas buenas personas para que tomen un café porque no creo que todos hayan tomado tanto como nosotros. Hay un montón de preguntas que son básicamente las mismas preguntas. Voy a parafrasear todas ellas aquí. ¿Qué tan personalizable es el design de la visualization de plot? ¿Puedes pasar tus propios componentes o elementos SVG en lugar de los existentes, como los componentes que tienes, por ejemplo barras? De hecho, puedes, creo. De nuevo, todos los enlaces a la documentation de plot están en las diapositivas, pero puedes pasar tus propias funciones y de nuevo, también debido a estas marcas y cosas componibles como esa, creo que es posible extenderlo con tu propio tipo de marca, por ejemplo, si hay algo más que quieras usar. Sin embargo, las marcas incorporadas pueden ser realmente útiles, como hay una marca de texto, por ejemplo, que puede ser realmente útil para hacer cosas como, oh, quiero que mi gráfico de puntos no sea puntos, pero quiero que sea emoji, o lo que sea, ¿verdad? Así que también puedes obtener mucho provecho de los incorporados tal como están. Genial. Y hay una pregunta realmente divertida aquí que simplemente tengo que hacer. ¿Cuál es tu secreto para una precisión de escritura impecable durante la codificación en vivo? Porque es bastante impresionante. No hay ninguno. Me equivoco todo el tiempo, solo, ya sabes, mucha práctica frenética antes de la charla. Pero yo, yo soy, yo estaba, yo estaba preocupado por los dioses del Wi-Fi estando con nosotros, pero llegamos, así que. Genial. Hemos pasado por muchas preguntas, y aquellos que están viendo esto más tarde y, ya sabes, la regrabación de la transmisión en vivo, no has estado viendo esto accidentalmente a doble velocidad. Estamos hablando muy rápido. Y, sí. Gente aquí en Londres, disfruten del descanso para el café. Vamos a volver en unos 20 minutos, así que habrá charlas relámpago. Se llevarán a cabo en el escenario principal, pero también se transmitirán por aquí, así que si quieres venir aquí en preparación para las charlas después, bienvenido. Gracias. Gracias.

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

A Guide to React Rendering Behavior
React Advanced Conference 2022React Advanced Conference 2022
25 min
A Guide to React Rendering Behavior
Top Content
React is a library for "rendering" UI from components, but many users find themselves confused about how React rendering actually works. What do terms like "rendering", "reconciliation", "Fibers", and "committing" actually mean? When do renders happen? How does Context affect rendering, and how do libraries like Redux cause updates? In this talk, we'll clear up the confusion and provide a solid foundation for understanding when, why, and how React renders. We'll look at: - What "rendering" actually is - How React queues renders and the standard rendering behavior - How keys and component types are used in rendering - Techniques for optimizing render performance - How context usage affects rendering behavior| - How external libraries tie into React rendering
Building Better Websites with Remix
React Summit Remote Edition 2021React Summit Remote Edition 2021
33 min
Building Better Websites with Remix
Top Content
Remix is a new web framework from the creators of React Router that helps you build better, faster websites through a solid understanding of web fundamentals. Remix takes care of the heavy lifting like server rendering, code splitting, prefetching, and navigation and leaves you with the fun part: building something awesome!
React Compiler - Understanding Idiomatic React (React Forget)
React Advanced Conference 2023React Advanced Conference 2023
33 min
React Compiler - Understanding Idiomatic React (React Forget)
Top Content
React provides a contract to developers- uphold certain rules, and React can efficiently and correctly update the UI. In this talk we'll explore these rules in depth, understanding the reasoning behind them and how they unlock new directions such as automatic memoization. 
Using useEffect Effectively
React Advanced Conference 2022React Advanced Conference 2022
30 min
Using useEffect Effectively
Top Content
Can useEffect affect your codebase negatively? From fetching data to fighting with imperative APIs, side effects are one of the biggest sources of frustration in web app development. And let’s be honest, putting everything in useEffect hooks doesn’t help much. In this talk, we'll demystify the useEffect hook and get a better understanding of when (and when not) to use it, as well as discover how declarative effects can make effect management more maintainable in even the most complex React apps.
Routing in React 18 and Beyond
React Summit 2022React Summit 2022
20 min
Routing in React 18 and Beyond
Top Content
Concurrent React and Server Components are changing the way we think about routing, rendering, and fetching in web applications. Next.js recently shared part of its vision to help developers adopt these new React features and take advantage of the benefits they unlock.In this talk, we’ll explore the past, present and future of routing in front-end applications and discuss how new features in React and Next.js can help us architect more performant and feature-rich applications.
React Concurrency, Explained
React Summit 2023React Summit 2023
23 min
React Concurrency, Explained
Top Content
React 18! Concurrent features! You might’ve already tried the new APIs like useTransition, or you might’ve just heard of them. But do you know how React 18 achieves the performance wins it brings with itself? In this talk, let’s peek under the hood of React 18’s performance features: - How React 18 lowers the time your page stays frozen (aka TBT) - What exactly happens in the main thread when you run useTransition() - What’s the catch with the improvements (there’s no free cake!), and why Vue.js and Preact straight refused to ship anything similar

Workshops on related topic

React Performance Debugging Masterclass
React Summit 2023React Summit 2023
170 min
React Performance Debugging Masterclass
Top Content
Featured WorkshopFree
Ivan Akulov
Ivan Akulov
Ivan’s first attempts at performance debugging were chaotic. He would see a slow interaction, try a random optimization, see that it didn't help, and keep trying other optimizations until he found the right one (or gave up).
Back then, Ivan didn’t know how to use performance devtools well. He would do a recording in Chrome DevTools or React Profiler, poke around it, try clicking random things, and then close it in frustration a few minutes later. Now, Ivan knows exactly where and what to look for. And in this workshop, Ivan will teach you that too.
Here’s how this is going to work. We’ll take a slow app → debug it (using tools like Chrome DevTools, React Profiler, and why-did-you-render) → pinpoint the bottleneck → and then repeat, several times more. We won’t talk about the solutions (in 90% of the cases, it’s just the ol’ regular useMemo() or memo()). But we’ll talk about everything that comes before – and learn how to analyze any React performance problem, step by step.
(Note: This workshop is best suited for engineers who are already familiar with how useMemo() and memo() work – but want to get better at using the performance tools around React. Also, we’ll be covering interaction performance, not load speed, so you won’t hear a word about Lighthouse 🤐)
Concurrent Rendering Adventures in React 18
React Advanced Conference 2021React Advanced Conference 2021
132 min
Concurrent Rendering Adventures in React 18
Top Content
Featured WorkshopFree
Maurice de Beijer
Maurice de Beijer
With the release of React 18 we finally get the long awaited concurrent rendering. But how is that going to affect your application? What are the benefits of concurrent rendering in React? What do you need to do to switch to concurrent rendering when you upgrade to React 18? And what if you don’t want or can’t use concurrent rendering yet?

There are some behavior changes you need to be aware of! In this workshop we will cover all of those subjects and more.

Join me with your laptop in this interactive workshop. You will see how easy it is to switch to concurrent rendering in your React application. You will learn all about concurrent rendering, SuspenseList, the startTransition API and more.
React Hooks Tips Only the Pros Know
React Summit Remote Edition 2021React Summit Remote Edition 2021
177 min
React Hooks Tips Only the Pros Know
Top Content
Featured Workshop
Maurice de Beijer
Maurice de Beijer
The addition of the hooks API to React was quite a major change. Before hooks most components had to be class based. Now, with hooks, these are often much simpler functional components. Hooks can be really simple to use. Almost deceptively simple. Because there are still plenty of ways you can mess up with hooks. And it often turns out there are many ways where you can improve your components a better understanding of how each React hook can be used.You will learn all about the pros and cons of the various hooks. You will learn when to use useState() versus useReducer(). We will look at using useContext() efficiently. You will see when to use useLayoutEffect() and when useEffect() is better.
React, TypeScript, and TDD
React Advanced Conference 2021React Advanced Conference 2021
174 min
React, TypeScript, and TDD
Top Content
Featured WorkshopFree
Paul Everitt
Paul Everitt
ReactJS is wildly popular and thus wildly supported. TypeScript is increasingly popular, and thus increasingly supported.

The two together? Not as much. Given that they both change quickly, it's hard to find accurate learning materials.

React+TypeScript, with JetBrains IDEs? That three-part combination is the topic of this series. We'll show a little about a lot. Meaning, the key steps to getting productive, in the IDE, for React projects using TypeScript. Along the way we'll show test-driven development and emphasize tips-and-tricks in the IDE.
Web3 Workshop - Building Your First Dapp
React Advanced Conference 2021React Advanced Conference 2021
145 min
Web3 Workshop - Building Your First Dapp
Top Content
Featured WorkshopFree
Nader Dabit
Nader Dabit
In this workshop, you'll learn how to build your first full stack dapp on the Ethereum blockchain, reading and writing data to the network, and connecting a front end application to the contract you've deployed. By the end of the workshop, you'll understand how to set up a full stack development environment, run a local node, and interact with any smart contract using React, HardHat, and Ethers.js.
Designing Effective Tests With React Testing Library
React Summit 2023React Summit 2023
151 min
Designing Effective Tests With React Testing Library
Top Content
Featured Workshop
Josh Justice
Josh Justice
React Testing Library is a great framework for React component tests because there are a lot of questions it answers for you, so you don’t need to worry about those questions. But that doesn’t mean testing is easy. There are still a lot of questions you have to figure out for yourself: How many component tests should you write vs end-to-end tests or lower-level unit tests? How can you test a certain line of code that is tricky to test? And what in the world are you supposed to do about that persistent act() warning?
In this three-hour workshop we’ll introduce React Testing Library along with a mental model for how to think about designing your component tests. This mental model will help you see how to test each bit of logic, whether or not to mock dependencies, and will help improve the design of your components. You’ll walk away with the tools, techniques, and principles you need to implement low-cost, high-value component tests.
Table of contents- The different kinds of React application tests, and where component tests fit in- A mental model for thinking about the inputs and outputs of the components you test- Options for selecting DOM elements to verify and interact with them- The value of mocks and why they shouldn’t be avoided- The challenges with asynchrony in RTL tests and how to handle them
Prerequisites- Familiarity with building applications with React- Basic experience writing automated tests with Jest or another unit testing framework- You do not need any experience with React Testing Library- Machine setup: Node LTS, Yarn