Saltar al contenido principal
Crea elementos interactivos en tus documentos usando componentes de React y hooks directamente en archivos MDX.

Componentes en línea

Declara componentes directamente en tu archivo MDX:

Restricciones

Los componentes de React en Mintlify se ejecutan en un entorno MDX aislado con las siguientes restricciones:
  • Los hooks de React están preinyectados: useState, useEffect, useRef, useCallback, useMemo, useContext y useReducer están disponibles sin necesidad de importarlos.
  • Los paquetes de npm requieren configuración: Para importar paquetes de terceros, configura las bibliotecas de terceros. De lo contrario, usa las funciones integradas del navegador o escribe la lógica en línea.
  • Sin exportaciones por defecto: Usa exportaciones con nombre (export const MyComponent = ...). Las exportaciones por defecto (export default) no son compatibles.
  • Sin importaciones entre snippets: Los archivos de snippets no pueden importar otros archivos de snippets. Importa todas las dependencias directamente en el archivo MDX principal.
  • Sin importaciones de JSON: No se admite importar archivos .json.
  • Sin división de código: React.lazy y import() dinámico no son compatibles. Todo el código de componentes de una página, incluidos los snippets importados, se compila en la página y se carga con ella.

Importar componentes

Los archivos de componentes deben estar en la carpeta /snippets/. Más información sobre fragmentos reutilizables.
Los imports anidados no son compatibles. Importa todos los componentes referenciados directamente en el archivo MDX padre.
Crea un archivo de componente en snippets/:
/snippets/color-generator.jsx
Luego impórtalo y úsalo:

Consideraciones

  • Renderizado en el cliente: La mayoría de los componentes personalizados se renderizan en el navegador después de que se carga la página, por lo que no están en el HTML renderizado en el servidor. Esto se aplica a los componentes que importas por nombre desde un snippet, como import { ColorGenerator } from "/snippets/color-generator.jsx", y a la mayoría de los componentes que defines con export en un archivo MDX. Los snippets MDX que importas como contenido, como import MySnippet from "/snippets/my-snippet.mdx", se renderizan en el servidor. Un componente que defines con export también se renderiza en el servidor cuando es una plantilla simple. Solo debe colocar sus props en elementos HTML y componentes integrados, sin estado, hooks, llamadas a funciones, condicionales, controladores de eventos ni atributos style. Cada lugar donde lo uses debe pasar solo atributos de texto simples, como <HeroCard title="Quickstart" href="/quickstart" />.
  • SEO: Como los componentes personalizados no están en el HTML inicial, es posible que los motores de búsqueda no indexen completamente su contenido.
  • Carga inicial: Los visitantes pueden ver un parpadeo o un desplazamiento del diseño mientras se renderizan los componentes personalizados. Para el contenido que debe aparecer en el HTML inicial o que no debe desplazarse al cargar, usa componentes integrados como tarjetas y columnas. La mayoría de los componentes integrados se renderizan en el servidor.
  • Accesibilidad: Asegúrate de que los lectores de pantalla anuncien los cambios de contenido dinámico.
  • Optimiza los arrays de dependencias: Incluye solo las dependencias necesarias en useEffect.
  • Memoriza operaciones costosas: Usa useMemo o useCallback cuando proceda.
  • Reduce los renderizados: Divide los componentes grandes en otros más pequeños.
  • Carga diferida: El código de los componentes no se puede cargar de forma diferida. Todos los componentes se cargan junto con la página. Si un componente realiza operaciones que consumen muchos recursos al montarse, como obtener datos o cálculos pesados, usa el renderizado condicional para posponer su montaje hasta que el usuario interactúe.