MDX — это расширение синтаксиса Markdown, позволяющее интегрировать JSX-компоненты и выражения JavaScript прямо в текст документации. Основная особенность MDX заключается в возможности комбинировать статический Markdown с динамическими возможностями React.
В MDX выражения JavaScript заключаются в фигурные скобки
{}. Любое корректное выражение JavaScript, возвращающее
значение, может быть встроено в текст:
Сегодняшняя дата: {new Date().toLocaleDateString()}
Здесь new Date().toLocaleDateString() вычисляется при
рендеринге страницы, и результат вставляется в текст. Фигурные скобки
позволяют не только отображать значения, но и использовать переменные,
функции и любые вычисления.
Переменные и функции можно определять в верхней части MDX-документа, как в обычном Jav * aScript:
export const userName = "Алексей";
function greet(name) {
return `Привет, ${name}!`;
}
{greet(userName)}
MDX поддерживает ключевое слово export, что позволяет
создавать константы и функции, которые будут доступны внутри документа,
а также за его пределами при импорте в другие компоненты.
Одно из сильных преимуществ MDX — возможность комбинировать JavaScript-выражения с JSX-компонентами. Компоненты можно использовать как внутри Markdown, так и передавать им вычисленные значения:
import Alert from './Alert'
<Alert message={`Сегодня ${new Date().toLocaleDateString()}`} type="info" />
Выражение внутри {} вычисляется перед рендерингом
компонента, что позволяет динамически формировать пропсы.
MDX поддерживает тернарные операции и условные рендеринги прямо в тексте:
{userName ? `Привет, ${userName}` : "Привет, гость"}
Можно также комбинировать тернарные выражения с компонентами:
{userName ? <Alert message={`Привет, ${userName}`} /> : <Alert message="Привет, гость" />}
Для вывода списков и коллекций удобно использовать методы массивов,
такие как map. В MDX это выглядит естественно, почти как в
JSX:
const fruits = ["Яблоко", "Банан", "Вишня"];
<ul>
{fruits.map(fruit => (
<li key={fruit}>{fruit}</li>
))}
</ul>
MDX корректно обрабатывает такие выражения, создавая динамические списки и структуры HTML на основе данных.
Вставка JavaScript-выражений в середину текста Markdown позволяет создавать динамичный контент:
Сегодня {new Date().getHours() < 12 ? "утро" : "день"} и пора начинать работу.
MDX гарантирует, что результат вычисления будет корректно интегрирован в текст, без необходимости использования дополнительных компонентов.
Выражения JavaScript позволяют динамически изменять классы и стили элементов:
const isActive = true;
<div className={isActive ? "active" : "inactive"}>
Состояние: {isActive ? "Активно" : "Неактивно"}
</div>
Такая гибкость делает MDX идеальным инструментом для документации, где нужно показывать примеры, реагирующие на данные или состояние приложения.
export, чтобы сохранять читаемость MDX.Использование выражений JavaScript в MDX открывает мощные возможности для создания интерактивной и динамической документации, объединяя простоту Markdown с функциональностью React.