Render React components within markdown and markdown as React components!
- Render markdown as React components.
- Render React components within the markdown!
- Full TypeScript Support.
- Fully tested.
- Supports all Showdown extensions, like the Twitter Extension and the Youtube Extension.
- New in 2.0: Supports Showdown Flavors!
- New in 2.1:
npm install --save react-showdown
or
yarn add react-showdown
Example with ES6/JSX:
import React from 'react';
import MarkdownView from 'react-showdown';
export default function App() {
const markdown = `
# Welcome to React Showdown :+1:
To get started, edit the markdown in \`example/src/App.tsx\`.
| Column 1 | Column 2 |
|----------|----------|
| A1 | B1 |
| A2 | B2 |
`;
return (
<MarkdownView
markdown={markdown}
options={{ tables: true, emoji: true }}
/>
);
};
Use a React component and use it within the markdown with ES6 / TypeScript:
import MarkdownView from 'react-showdown';
function CustomComponent({ name }: { name: string }) {
return <span>Hello {name}!</span>;
}
const markdown = `
# A custom component:
<CustomComponent name="world" />`;
<MarkdownView markdown={markdown} components={{ CustomComponent }} />
- markdown, string, required
- flavor, Flavor, optional
- options, ConverterOptions, optional
- extensions, showdown extensions, optional
- components, components, optional
Converter options will be pushed forward to the showdown converter, please checkout the valid options section.
Project is based on the markdown parser Showdown and the html parser htmlparser2.
- reactdown
- react-markdown, based on commonmark.js
- commonmark-react-renderer, based on commonmark.js