MDX

Source file extensions: .mdx

MDX is an authorable format that lets you seamlessly write JSX in Markdown documents.

MDX 2 is now used by default.

MDX is recommended with frameworks supporting JSX as first-class citizen like React, Preact or Stencil.

Example

doc.mdx

import MyComponent from './MyComponent';

# Hello, _world_!

Below is an example of JSX embedded in Markdown. <br />
**Try and change the background color!**

<MyComponent></MyComponent>

Import npm packages

You can import modules from npm by using their bare name:

import { Box, Heading, Text } from 'rebass'

# Here is a JSX block

It is using imported components!
<Box>
<Heading>Here's a JSX block</Heading>
<Text>It's pretty neat</Text>
</Box>

You can import a module from the component, use the relative path with ./:

import MyComponent from './MyComponent';

# Using the component I just coded

<MyComponent></MyComponent>

Vue specific usage

You need to provide a specific runtime for being able to render MDX files.

In your package.json, declare this dependency:

{
  "devDependencies": {
    ...
    "vue-jsx-runtime": "*"
    ...
  }
}

Finally use your Vue component:

import MyComponent from './MyComponent.vue';

<MyComponent></MyComponent>

Stencil specific usage

You need to provide a specific runtime for being able to render MDX files.

In your package.json, declare this dependency:

{
  "devDependencies": {
    ...
    "stencil-jsx-runtime": "*"
    ...
  }
}

In Stencil you cannot use directly the module export but you can use the tag of your custom element.

Use the JSX syntax to pass properties/attribute/listeners to your component:

import './MyComponent';

const foo = {
value: "bar"
};

<my-component prop1={foo} style={{border:'1px solid red'}}></my-component>

References