React 前端导航

使用MDX在md文件中解析React组件

使用MDX在md文件中解析React组件

背景

之前我们处理过 md 文件处理成 html 展示,使用 markdown 语法写文章,但是在此基础上做样式调整很麻烦,展现形式也不够丰富,所以我们想让 md 与 React JSX结合来丰富我们的展现形式。

这里我们将介绍如何使用 MDX 来实现我们的需求,MDX会将常规的 Markdown 和 JSX编译为Javascript,.md 后缀的文件名需要改成 .mdx 后缀。

在 React JSX 中使用 MDX

① 直接引用 @mdx-js/react 解析

  import {MDXProvider} from '@mdx-js/react'
  import Post from './post.mdx'
  // ^-- Assumes an integration is used to compile MDX to JS, such as
  // `@mdx-js/esbuild`, `@mdx-js/loader`, `@mdx-js/node-loader`, or
  // `@mdx-js/rollup`, and that it is configured with
  // `options.providerImportSource: '@mdx-js/react'`.

  const components = {
    em: props => <i {...props} />
  }

  <MDXProvider components={components}>
    <Post />
  </MDXProvider>

② 使用 webpack 或者 create-react-app(CRA), Next.js,下载配置 @mdx-js/loader 即可,loader 配置方法此处不详细介绍,请自行百度或Google。

在 Node 中使用 MDX,SSR 服务端渲染是会用到

安装 @mdx-js/node-loader@next, 此依赖包仅适用于 ESM(ES Module),需要 Node 12+ 才能使用它,并且必须使用import 而不是required。

import {renderToStaticMarkup} from 'react-dom/server.js'
import React from 'react'
import Content from './example.mdx'

console.log(renderToStaticMarkup(React.createElement(Content)))

最后

本文只介绍了React中 MDX 的使用,MDX 还可以在更多的地方使用:esbuild,rollup,Preact,Vue 3,Emotion等。

更多关于MDX的 用法及介绍参考链接: MDX官网

声明:本网站发布的内容(图片、视频和文字)以原创、转载和分享网络内容为主,如果涉及侵权请尽快告知,我们将会在第一时间删除。文章观点不代表本网站立场,如需处理请联系客服。邮箱:farmerlzj@163.com。 本站原创内容未经允许不得转载,或转载时需注明出处: 内容转载自: React前端网:https://qianduan.shop/blogs/detail/25

#react#markdown#JSX#MDX

相关推荐

react中实现markdown文件读取展示

react中实现markdown文件读取展示

umi实践问题汇总--持续更新

在使用umi的过程中所遇到问题的记录汇总