HomeTodos os Posts
Introdução ao MDX!

Introdução ao MDX!

January 08, 2022

Tempo de leitura: 2 minutos

É bem possível que você já teve contato com o formato Markdown (*.md). Seja quando abriu um Pull Request, durante um chat do Facebook ou escrever um comentário no Reddit.

A filosofia por trás do Markdown é a simplicidade: textos devem ser legíveis sem a necessidade de marcações (tags) que acabam por confundir o leitor (exemplo HTML). Posto de outra forma, um arquivo markdown deve maximizar a separação entre formato e conteúdo. Não obstante, deve haver maneiras de adicionar modificadores de texto como listas, negrito, itálico e etc.

A simplicidade do markdown vem desde a sua especificação em que poucas páginas descrevem as sintaxe da linguagem. E talvez esteja aí umas das principais limitações de se documentar em markdown. Quando a documentação exige componentes mais complexos, como por exemplo um colapse, a versão original do markdown não tem suporte. Por essa razão, existem alguns “sabores” de markdown que propõe alguns elementos sintáticos que aumentam as possibilidades de documentar em determinados contextos. Um exemplo é superset do markdown utilizado pelo Github. Um outro “sabor” que vem ganhando popularidade é o MDX!.

MDX

Em resumo o formato MDX permite que você inclua componentes JSX dentro de um arquivo markdown. MDX funciona com o Gatsby por meio de um plugin gatsby-plugin-mdx. Você pode saber mais sobre o uso do JSX nos documentos do Gatsby: Getting Started with MDX.

Componentes Customizados

Suponha que você tenha escrito um componente Button no seu projeto que esteja localizado em src/components/button. Você pode importar no seu arquivo *.mdx os seus componentes customizado escritos em React.

// Import custom component
import Button from "src/components/button"

<Button color='yellow' marginBottom='25px'>Test</Button>

Com base no código anterior um botão será renderizado na sua página conforme o exemplo a seguir:

Para que seja possível importar seus componentes é necessário utilizar o plugin gatsby-plugin-root-import de modo a disponibilizar o caminho relativo do componente.


Written by Vagner Clementino. Follow me on Twitter