Uno de los principios del desarrollo de software es DRY (Don’t Repeat
Yourself). También aplica a la documentación.
Si repites el mismo contenido en varios sitios, considera crear un fragmento
personalizado para mantenerlo sincronizado.
Crear un fragmento personalizado
Requisito: el archivo del fragmento debe estar en el directorio snippets.
Cualquier página en snippets se trata como fragmento y no se renderiza como página sola. Para una página independiente, importa el fragmento en otro archivo y úsalo como componente.
Export por defecto
- Añade el contenido que quieras reutilizar. Opcionalmente usa variables rellenadas por props al importar.
Hello world! This is my content I want to reuse across pages. My keyword of the
day is {word}.
El contenido reutilizable debe estar dentro de snippets para que el import funcione.
- Importa el fragmento en el archivo destino.
---
title: My title
description: My Description
---
import MySnippet from '/snippets/path/to/my-snippet.mdx';
## Header
Lorem impsum dolor sit amet.
<MySnippet word="bananas" />
Variables reutilizables
- Exporta variables desde el fragmento:
snippets/path/to/custom-variables.mdx
export const myName = 'my name';
export const myObject = { fruit: 'strawberries' };
- Importa y usa en el destino:
---
title: My title
description: My Description
---
import { myName, myObject } from '/snippets/path/to/custom-variables.mdx';
Hello, my name is {myName} and I like {myObject.fruit}.
Componentes reutilizables
- En el fragmento, exporta un componente con props como función flecha.
snippets/custom-component.mdx
export const MyComponent = ({ title }) => (
<div>
<h1>{title}</h1>
<p>... snippet content ...</p>
</div>
);
MDX no compila dentro del cuerpo de una función flecha. Usa HTML cuando puedas o un export por defecto si necesitas MDX.
- Importa en el destino y pasa props:
---
title: My title
description: My Description
---
import { MyComponent } from '/snippets/custom-component.mdx';
Lorem ipsum dolor sit amet.
<MyComponent title={'Custom title'} />