MDX (Markdown + JSX) позволяет комбинировать разметку Markdown с возможностями React, что делает работу с контентом максимально гибкой. Цитаты в MDX оформляются аналогично стандартному Markdown, однако их функциональность можно расширять за счет компонентов React и кастомного оформления.
Для создания простой цитаты используется знак больше
> в начале строки:
> Это пример базовой цитаты в MDX.
Результат будет визуально идентичен Markdown: текст выделяется
отступом и обычно курсивом или другим стилем, установленным в CSS для
тега <blockquote>.
Особенности MDX:
>:> Основная цитата
>
> > Вложенная цитата
MDX позволяет вставлять JSX-компоненты прямо в цитаты, что расширяет функциональность:
> Здесь можно использовать компонент:
> <Author name="Иван Петров" role="Разработчик" />
В этом примере компонент Author рендерится внутри блока
цитаты. Важный момент — все JSX-теги должны быть корректно закрыты,
иначе парсер MDX выдаст ошибку.
Для придания цитатам уникального внешнего вида и поведения удобно создавать обертку-компонент:
// Quote.js
export const Quote = ({ children, author }) => (
<blockquote style={{ borderLeft: '4px solid #007acc', paddingLeft: '16px', color: '#333' }}>
<p>{children}</p>
{author && <footer>— {author}</footer>}
</blockquote>
);
Использование в MDX:
<Quote author="Алексей Смирнов">
MDX позволяет интегрировать цитаты с компонентами React для гибкой стилизации.
</Quote>
Преимущества подхода:
MDX дает возможность добавлять изображения, видео или другие компоненты внутрь цитат:
> <img src="/images/quote-author.jpg" alt="Автор цитаты" width="50" />
> Цитата с изображением автора и интерактивными элементами.
Также можно включать ссылки, кнопки или даже списки:
> Список важных пунктов внутри цитаты:
> - Пункт 1
> - Пункт 2
Для крупного проекта часто применяют Styled Components или Emotion для управления стилями цитат:
import styled from '@emotion/styled';
const StyledQuote = styled.blockquote`
border-left: 5px solid #ff6600;
padding: 1em;
margin: 1em 0;
font-style: italic;
color: #444;
background-color: #f9f9f9;
`;
В MDX:
<StyledQuote>
Цитата с кастомной стилизацией через Emotion.
</StyledQuote>
Такой подход обеспечивает полную контроль над визуальной частью и легко масштабируется при большом объеме документации.
MDX позволяет передавать данные из контекста или API:
// DynamicQuote.js
export const DynamicQuote = ({ quoteId, quotes }) => (
<blockquote>
{quotes[quoteId]?.text || 'Цитата не найдена'}
{quotes[quoteId]?.author && <footer>— {quotes[quoteId].author}</footer>}
</blockquote>
);
В MDX:
<DynamicQuote quoteId="123" quotes={quotesData} />
Это позволяет создавать динамический контент, который автоматически обновляется при изменении исходных данных.
Эти подходы обеспечивают гибкость и масштабируемость работы с цитатами в MDX и позволяют создавать как простые текстовые блоки, так и сложные, интерактивные элементы документации.