Estudio de caso: Construcción de componentes React reutilizables accesibles en GitHub

Rate this content
Bookmark

Los influencers de Twitter te harían creer que si simplemente usas la etiqueta html semántica en lugar de un div, tus componentes serán accesibles. ¡Pero hay mucho más que eso!

Enfoquémonos en un componente de GitHub (¡uno que probablemente hayas usado antes!) y veamos todas las consideraciones de accesibilidad involucradas y los desafíos interesantes en su implementación.

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

Siddharth Kshetrapal
Siddharth Kshetrapal
29 min
14 Jun, 2024

Comments

Sign in or register to post your comment.

Video Summary and Transcription

La charla discute la construcción de componentes React accesibles y enfatiza la importancia de utilizar los elementos HTML correctos y los roles ARIA para la accesibilidad. Explica cómo navegar y seleccionar opciones dentro de un formulario y cómo agregar texto complementario utilizando Aria described by. El orador también discute los beneficios de utilizar casillas de verificación condicionales y ARIA disabled para mejorar la interfaz de usuario. Además, la charla explora el papel de JavaScript en la accesibilidad web y brinda recomendaciones para probar la accesibilidad del sitio web.

1. Introducción y Antecedentes

Short description:

Soy Sid, un desarrollador front-end en el equipo de sistemas de diseño en GitHub. Hoy quiero hablar sobre la construcción de componentes accesibles en React.

Gracias por la introducción. Soy Sid. Mi nombre completo es Siddharth, pero no me gusta que la gente destroce mi nombre. Solo me llaman Sid. Está bien. Es más fácil. Trabajo en el equipo de sistemas de diseño en GitHub y paso mucho tiempo manteniendo la biblioteca de componentes de React que forma parte del sistema de diseño. Quiero hablar sobre la construcción de componentes accesibles en React con un enfoque en la accesibilidad. Muchas de las cosas de las que hablaré hoy son en realidad independientes del framework. Pero una advertencia justa, no soy un experto en accesibilidad. Solo soy un chico de React un poco tonto. Pero pasé mucho tiempo el año pasado trabajando con expertos en accesibilidad y he absorbido muchas cosas y tal vez, como desarrollador front-end, si eres como yo, este tipo de introducción sea más útil que una centrada en la accesibilidad.

2. Making Accessible Experiences

Short description:

Para crear experiencias accesibles, es importante utilizar el elemento HTML correcto. Sin embargo, hay más que eso. Las pestañas son un buen patrón para mostrar controles en un espacio reducido. La implementación implica botones y cambios de estado. Al utilizar un lector de pantalla, se anuncia el enfoque en un botón, junto con su etiqueta y acciones asociadas.

Muy bien. Crucemos los dedos. Vamos. Entonces, cosas... ¿Cuáles son las cosas que necesitamos para crear experiencias accesibles? Si escuchas a los influencers en Twitter, deberías usar un botón y no un div. Y generalmente viene acompañado de un ejemplo de código con un bonito fondo morado. Y así tienes que utilizar el elemento HTML correcto. Y si les haces caso, eso es todo. Podríamos ir a almorzar ahora mismo. Pero, por supuesto, eso es... Esta forma de plantearlo es muy reduccionista porque hay mucho más que eso. Esto no es falso. Aún así, debes intentar utilizar el elemento correcto. Y si es una acción interactiva, entonces debes usar un botón. Pero hay mucho más que eso, por ejemplo.

Así que hay esta interfaz, hay este widget emergente en GitHub donde se muestra mucha información de forma densa. Así que tienes espacios de código, copiloto y la pestaña local. Y cuando tienes que mostrar muchos controles en un espacio muy reducido, las pestañas son un patrón realmente bueno y eso es lo que usamos aquí. Y realmente... Creo que funciona muy bien si estás utilizando la UI de esta manera. Y la implementación también es un poco peculiar. Tenemos botones. Sí, usamos botones. Y estoy estableciendo un estado aquí de cuál es la pestaña seleccionada. ¿Puedes ver mi cursor? Genial. Y luego todos estamos de acuerdo en que cuando es una elevación como esta, eso es una pestaña. Y cuando cambias la pestaña, la elevación se mueve. No sé por qué, pero todos lo sabemos, y este es un patrón común de diseño. Así que eso es lo que hago. Doy un nombre de clase. Y eso es lo que hace que el nombre de clase sea una elevación. Pero ¿qué pasa si alguien que no puede ver la pantalla y en su lugar está utilizando un lector de pantalla, qué escucha? ¿Qué percibe? Vamos a probarlo. Además, esto va a ser una prueba del audio. Así que lo descubriremos. Si está demasiado alto, se arreglará. No te preocupes.

De acuerdo. Vamos. VoiceOver en la aplicación. Aplicación React. Perfecto. Cada vez que inicias VoiceOver en Mac, comienza anunciando que VoiceOver ha sido habilitado y está en la aplicación React. Siguiente. Code. El botón emergente del menú tiene el enfoque del teclado. Así que anunciará qué elemento tiene el enfoque del teclado en este momento. Así que si no puedes ver nada y solo estás escuchando esto, sabes que el enfoque está en un botón. Tiene una etiqueta code. Y tiene un menú emergente. Así que porque sabes que tiene un menú emergente, puedes presionar enter y puedes abrir el menú emergente.

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

Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
React Summit 2022React Summit 2022
17 min
Composición vs Configuración: Cómo Construir Componentes Flexibles, Resilientes y a Prueba de Futuro
Top Content
Today's Talk discusses building flexible, resilient, and future-proof React components using composition and configuration approaches. The composition approach allows for flexibility without excessive conditional logic by using multiple components and passing props. The context API can be used for variant styling, allowing for appropriate styling and class specification. Adding variants and icons is made easy by consuming the variant context. The composition and configuration approaches can be combined for the best of both worlds.
El componente de React más caro del mundo y cómo dejar de escribirlo
React Advanced Conference 2021React Advanced Conference 2021
23 min
El componente de React más caro del mundo y cómo dejar de escribirlo
Top Content
Today's Talk discusses expensive React components and API design, with a focus on the cost of coordination and overcoming imposter syndrome. The speaker shares a story about a cat trying to fix salted coffee, highlighting the importance of finding simple solutions. The billion dollar component on ReactJS.org is examined as an example of an expensive component. Techniques for customizing messages, improving accessibility, and using polymorphic props are discussed. The Talk concludes by emphasizing the cost of communication and the need to evaluate if props and components are the right tools for the job.
Descubre si tu sistema de diseño es mejor que nada
React Summit 2022React Summit 2022
20 min
Descubre si tu sistema de diseño es mejor que nada
Building a design system without adoption is a waste of time. Grafana UI's adoption is growing consistently over time. The factors affecting design system adoption include the source mix changing, displacement of Homebrew components by Grafana UI, and the limitations of Grafana UI's current state. Measuring adoption is important to determine the success of a design system. The analysis of code through static code analysis tools is valuable in detecting and tracking component usage.
Cómo lograr la composición de diseño en React
React Summit 2022React Summit 2022
8 min
Cómo lograr la composición de diseño en React
This talk discusses achieving layout composition in React using Bedrock Layout Primitives. By componentizing CSS layout, complex layouts can be achieved and reused across different components. The talk also covers the challenges of achieving complex layouts, such as card lineups, and provides solutions for maintaining alignment and responsiveness. The BedrockLayout primitive library simplifies web layouts and offers flexibility in composing layouts.
CCTDD: Diseño impulsado por pruebas de componentes Cypress
TestJS Summit 2022TestJS Summit 2022
25 min
CCTDD: Diseño impulsado por pruebas de componentes Cypress
Cypress component test-driven design can take front-end engineers to the next level by covering TDD examples, component testing, endpoint testing, and recommended best practices. The TDD flow involves starting with failing tests, making them work, and then improving them. Component tests can be written incrementally, using custom wrappers and props. The differences between React Testing Library and Cypress Component Test lie in the API style. Code coverage can be achieved with Cypress component tests, and the Pack.js Cypress Adapter can be used to avoid test duplication between the backend and frontend.
Componentes Genéricos con TS y React
React Day Berlin 2022React Day Berlin 2022
10 min
Componentes Genéricos con TS y React
Ilya, a Staff Engineer in ArtSecurity, gives a talk on using generic components with React and TypeScript. He demonstrates how to pass generics to React components and addresses syntax limitations. Generics allow components to operate on data without a defined shape and are commonly used in form field components and component libraries.

Workshops on related topic

Práctica con AG Grid's React Data Grid
React Summit 2022React Summit 2022
147 min
Práctica con AG Grid's React Data Grid
WorkshopFree
Sean Landsman
Sean Landsman
Comienza con AG Grid React Data Grid con un tutorial práctico del equipo principal que te guiará a través de los pasos para crear tu primera cuadrícula, incluyendo cómo configurar la cuadrícula con propiedades simples y componentes personalizados. La edición comunitaria de AG Grid es completamente gratuita para usar en aplicaciones comerciales, por lo que aprenderás una herramienta poderosa que puedes agregar de inmediato a tus proyectos. También descubrirás cómo cargar datos en la cuadrícula y diferentes formas de agregar representación personalizada a la cuadrícula. Al final del masterclass, habrás creado una cuadrícula de datos AG Grid React y la habrás personalizado con componentes funcionales de React.- Comenzando e instalando AG Grid- Configurando ordenamiento, filtrado, paginación- Cargando datos en la cuadrícula- La API de la cuadrícula- Usando hooks y componentes funcionales con AG Grid- Capacidades de la edición comunitaria gratuita de AG Grid- Personalizando la cuadrícula con componentes de React
Practica Técnicas de TypeScript Construyendo una Aplicación con Componentes de Servidor React
TypeScript Congress 2023TypeScript Congress 2023
131 min
Practica Técnicas de TypeScript Construyendo una Aplicación con Componentes de Servidor React
Workshop
Maurice de Beijer
Maurice de Beijer
En esta masterclass práctica, Maurice te guiará personalmente a través de una serie de ejercicios diseñados para empoderarte con una profunda comprensión de los Componentes de Servidor React y el poder de TypeScript. Descubre cómo optimizar tus aplicaciones, mejorar el rendimiento y desbloquear nuevas posibilidades.
 
Durante la masterclass, realizarás:
- Maximizar la mantenibilidad y escalabilidad del código con prácticas avanzadas de TypeScript
- Desatar los beneficios de rendimiento de los Componentes de Servidor React, superando enfoques tradicionales
- Potenciar tu TypeScript con el poder de los Tipos Mapeados
- Hacer tus tipos TypeScript más seguros con Tipos Opacos
- Explorar el poder de los Tipos de Plantillas Literales al usar Tipos Mapeados
 
Maurice estará virtualmente a tu lado, ofreciendo una guía completa y respondiendo a tus preguntas mientras navegas por cada ejercicio. Al final de la masterclass, habrás dominado los Componentes de Servidor React, armado con un nuevo arsenal de conocimientos de TypeScript para potenciar tus aplicaciones React.
 
No pierdas esta oportunidad de elevar tu experiencia en React a nuevas alturas. Únete a nuestra masterclass y desbloquea el potencial de los Componentes de Servidor React con TypeScript. Tus aplicaciones te lo agradecerán.
De la Idea a la Producción: Desarrollo de React con un Toque Visual
React Summit 2023React Summit 2023
31 min
De la Idea a la Producción: Desarrollo de React con un Toque Visual
WorkshopFree
Omer Kenet
Omer Kenet
Únete a nosotros para un masterclass de 3 horas que explora el mundo del desarrollo creativo de React utilizando Codux. Los participantes explorarán cómo un enfoque visual puede desbloquear la creatividad, agilizar los flujos de trabajo y mejorar la velocidad de desarrollo. Sumérgete en las características que hacen de Codux un cambio de juego para los desarrolladores de React. La sesión incluirá ejercicios prácticos que demuestran el poder de la renderización en tiempo real, la manipulación visual del código y el aislamiento de componentes, todo en tu código fuente.
Tabla de contenidos:- Descarga e instalación: Preparando Codux para el masterclass- Selector de proyectos: Clonación e instalación de un proyecto de demostración- Introducción a los conceptos principales de Codux y su interfaz de usuario- Ejercicio 1: Encontrando nuestro camino- Descanso- Ejercicio 2: Realizando cambios de manera efectiva- Ejercicio 3: Reutilización y validación de casos especiales- Resumen, Cierre y Preguntas y Respuestas
Curso intensivo de TypeScript para contenido de un CMS sin cabeza
React Summit 2022React Summit 2022
98 min
Curso intensivo de TypeScript para contenido de un CMS sin cabeza
WorkshopFree
Ondrej Polesny
Ondrej Polesny
En este masterclass, primero te mostraré cómo crear un nuevo proyecto en un CMS sin cabeza, llenarlo con datos y usar el contenido en tu proyecto. Luego, pasaremos el resto del tiempo en código, haremos lo siguiente:- Generar modelos y estructuras de tipo fuertemente tipados para el contenido obtenido.- Usar el contenido en componentes- Resolver contenido de campos de texto enriquecido en componentes de React- Tocar los pipelines de implementación y las posibilidades de descubrir problemas relacionados con el contenido antes de llegar a producción
Aprenderás:- Cómo trabajar con contenido de un CMS sin cabeza- Cómo se puede aprovechar el modelo de contenido para generar tipos en TypeScript y qué beneficios aporta a tu proyecto- Cómo dejar de usar literales de cadena para el contenido en el código- Cómo resolver texto enriquecido en componentes de React- Cómo minimizar o evitar problemas relacionados con el contenido antes de llegar a producción