小编Max*_*ack的帖子

如何在react-markdown中使用自定义组件

上下文:我有一个带有Chakra UI的Next.js网站。我有一些用户提供的 Markdown 内容,这些内容是在运行时从外部源(例如,存储库的 GitHub)获取的。README.md

现在,默认情况下,react-markdown(基于remarkjs)使用 HTML<img>标签来标记图像 ( ![]())。我想在用户提供的 markdown 中使用Next.js 10 中发布的新组件。<Image />此外,我还想用相应的 Chakra UI 组件替换其他标签。

我该怎么做呢?

解决方案

// utils/parser.tsx

import Image from 'next/image';

export default function ImageRenderer({ src, alt }) {
  return <Image src={src} alt={alt} unsized />;
}

Run Code Online (Sandbox Code Playgroud)

然后在需要的页面中:

//pages/readme.tsx

import ReactMarkdown from 'react-markdown';
import imageRenderer from '../utils/parser';

// `readme` is sanitised markdown that comes from getServerSideProps
export default function Module({ readme }) …
Run Code Online (Sandbox Code Playgroud)

markdown reactjs remarkjs next.js chakra-ui

3
推荐指数
1
解决办法
7964
查看次数

标签 统计

chakra-ui ×1

markdown ×1

next.js ×1

reactjs ×1

remarkjs ×1