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:

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

  • Solo renderizado en el cliente: 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 defines con export en un archivo MDX y a los componentes que importas por nombre desde un snippet, como import { ColorGenerator } from "/snippets/color-generator.jsx". Los snippets MDX que importas como contenido, como import MySnippet from "/snippets/my-snippet.mdx", se renderizan en el servidor.
  • 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.