0Pricing
React Academy · Lección

Creación de una API imperativa para componentes

Diseñe un input con gestión del foco, un modal con métodos open/close y otros patrones de componentes imperativos.

Creación de una API imperativa para componentes es una lección gratuita de React Academy en CoddyKit. Esta es la lección 3 de 4. Puedes leer la lección completa abajo gratuitamente — luego la practicas en el navegador con un editor de código integrado y un tutor de IA 24/7. Forma parte de la ruta de aprendizaje de React Academy, y tu progreso se sincroniza en la web y la app de CoddyKit. El curso de React Academy incluye 4 lecciones en total.

Diseño de un FocusableInput

Comience por decidir el contrato: un FocusableInput podría exponer focus, blur y getValue. Envuélvalo en forwardRef, mantenga una ref interna al input real y devuelva esos tres métodos desde useImperativeHandle.

Cada método delega en el input subyacente, por lo que el componente padre obtiene exactamente las operaciones que necesita sin tocar el elemento DOM directamente.

Un VideoPlayer que expone play/pause/seekTo

Un componente multimedia obtiene gran provecho de una API imperativa. Un VideoPlayer puede exponer play, pause y seekTo, y delegar cada uno en los métodos del HTMLVideoElement nativo mediante una ref interna al video.

seekTo acepta un tiempo en segundos y establece currentTime, lo que proporciona a los componentes padre un control preciso de la reproducción que sería difícil de conseguir usando únicamente props.

Un Carousel que expone next/prev/goToSlide

Un Carousel puede exponer next, prev y goToSlide para que los controles externos o los gestores de teclado puedan controlarlo. Internamente, estos métodos actualizan el estado del índice activo y el componente vuelve a renderizarse con la nueva diapositiva.

Esto combina activadores imperativos con renderizado declarativo: el componente padre ordena una transición y el carousel renderiza el resultado mediante su flujo de estado habitual.

Documentación de la API imperativa

Un handle imperativo es un contrato público, así que documente cada método, sus parámetros y su valor de retorno. Una documentación clara indica a los consumidores qué se admite y desaconseja depender de elementos internos no documentados.

Trate el handle como cualquier otra superficie de API: una referencia breve que enumere métodos como play(), pause() y seekTo(seconds) evita usos incorrectos y confusiones.

Compatibilidad con versiones anteriores al evolucionar los handles

Cuando los consumidores dependen de un handle, eliminar o cambiar el nombre de un método es un cambio incompatible. Añada métodos nuevos en lugar de modificar las firmas existentes y marque los métodos como obsoletos gradualmente antes de eliminar cualquier elemento.

Considerar el handle como una API versionada evita que se rompa el código dependiente cuando amplía el componente con el tiempo.

Props controladas + API imperativa híbrida

Muchos componentes reales combinan ambos estilos. Un VideoPlayer podría aceptar de forma declarativa una prop src y una prop autoPlay, y al mismo tiempo exponer play y seekTo para situaciones que las props no expresan bien.

La pauta es utilizar props para el estado y la configuración, y reservar el handle imperativo para acciones puntuales activadas en momentos concretos.

Pruebas con act() y callbacks de ref

Para probar una API imperativa, renderice el componente con una ref, envuelva las interacciones en act y llame a los métodos expuestos mediante ref.current. Después, compruebe el resultado observable, como que el video esté pausado o que cambie el índice de la diapositiva.

Un callback de ref puede capturar el handle durante el renderizado, de modo que la prueba tenga una referencia estable desde la que llamar a los métodos.

Historias de Storybook

Storybook es un buen lugar para demostrar los handles imperativos. Una historia puede conservar una ref al componente y renderizar botones que llamen a sus métodos, lo que permite a los revisores probar play, pause o goToSlide de forma interactiva.

Estas historias también sirven como documentación viva, ya que muestran con precisión cómo se comporta la API imperativa de forma aislada.

Ejemplos del mundo real

Los handles imperativos son habituales al envolver bibliotecas que no son de React. Las bibliotecas de gráficos exponen métodos como redraw o update, los SDK de mapas exponen panTo y setZoom, y los editores de texto enriquecido exponen insertText o getContents.

Envolver una biblioteca de este tipo en un componente de React y ofrecer un handle limpio proporciona al resto de la aplicación una forma ordenada e idiomática de controlarla.

Mantener estable el handle

Los métodos de un handle suelen capturar el estado actual, así que utilice el array de dependencias de useImperativeHandle para actualizarlos cuando sea necesario y useCallback para los helpers internos, con el fin de evitar cierres obsoletos.

Un handle bien gestionado siempre opera con valores actualizados, por lo que cuando un componente padre llama a getValue o seekTo obtiene un comportamiento coherente con el renderizado más reciente.

Comprobación rápida: diseño de API imperativa

Aplique la pauta de diseño para las API imperativas de componentes.

Repaso: API imperativas de componentes

Diseñó handles para un FocusableInput, un VideoPlayer y un Carousel, y cada uno expone un conjunto reducido de métodos de acción. Documente y versione esos métodos, ya que los consumidores dependen de ellos como de una API pública.

Combine acciones imperativas con props declarativas, pruebe mediante ref.current dentro de act y muestre el comportamiento en Storybook. El mismo patrón permite envolver de forma limpia bibliotecas de gráficos, mapas y editores.

Preguntas frecuentes

¿La lección «Creación de una API imperativa para componentes» es gratis?

Sí — el texto completo de «Creación de una API imperativa para componentes» es gratis para leer aquí en la web. Para practicarla de forma interactiva (editor de código integrado y tutor de IA 24/7) y desbloquear el resto del curso de React Academy, actualiza a CoddyKit PRO. El curso de React Academy incluye 4 lecciones en total.

¿Qué aprenderé en «Creación de una API imperativa para componentes»?

Diseñe un input con gestión del foco, un modal con métodos open/close y otros patrones de componentes imperativos. Practicas React Academy con código real que ejecutas directamente en el navegador, y un tutor de IA 24/7 responde tus preguntas mientras trabajas en la lección.

¿Necesito experiencia previa para empezar React Academy?

No se requiere experiencia previa. React Academy en CoddyKit está estructurado para principiantes hasta estudiantes avanzados, así que puedes empezar aquí o desde el inicio y avanzar a tu ritmo. Esta es la lección 3 de 4.

¿Cuánto tiempo toma la lección «Creación de una API imperativa para componentes»?

La mayoría de las lecciones de CoddyKit toman alrededor de 5–10 minutos. Cada una es compacta e interactiva, así que avanzas constantemente y retomas exactamente por donde dejaste en la web y la app.

¿Puedo escribir y ejecutar código en esta lección de React Academy?

Sí. Cada lección de React Academy incluye un editor de código integrado, así que escribes y ejecutas código real directamente en tu navegador y obtienes retroalimentación instantánea de IA — sin configuración local necesaria.

Todas las lecciones de este curso

  1. forwardRef: exposición de referencias DOM a componentes padre
  2. useImperativeHandle: valores de instancia personalizados
  3. Creación de una API imperativa para componentes
  4. Cuándo utilizar API imperativas frente a declarativas
← Volver a React Academy