Componentes en línea
Importar componentes
/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.
snippets/:
/snippets/color-generator.jsx
Consideraciones
- SEO: Es posible que los motores de búsqueda no indexen completamente el contenido dinámico renderizado en el cliente.
- Carga inicial: Los visitantes pueden ver un parpadeo antes de que los componentes se rendericen.
- 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
useMemoouseCallbackcuando proceda. - Reduce los renderizados: Divide los componentes grandes en otros más pequeños.
- Carga diferida: Difiere el renderizado de los componentes complejos hasta que sean necesarios para mejorar el tiempo de carga inicial de la página. Como el entorno sandbox de MDX no admite
React.lazyniimport()dinámico, en su lugar condiciona los componentes pesados a la interacción del usuario o a su visibilidad. Consulta Diferir el renderizado de componentes pesados.
Diferir el renderizado de componentes pesados
React.lazy, Suspense y el import() dinámico no están disponibles en el sandbox de MDX. Para obtener el mismo beneficio, renderiza primero un marcador de posición ligero y monta el componente costoso solo después de que el lector lo solicite. Esto mantiene rápida la carga inicial de la página y, aun así, permite que los lectores interactúen con el componente completo.
El ejemplo siguiente mantiene el ColorGenerator de la sección anterior sin montar hasta que el lector hace clic en Load color generator:
IntersectionObserver configurado dentro de un useEffect. El patrón es el mismo: mantén show en false hasta que se active el disparador y, entonces, devuelve el componente pesado.