【发布时间】:2021-02-15 05:46:39
【问题描述】:
上下文:我有一个带有Chakra UI 的Next.js 站点。我有一些用户在运行时从外部来源(例如,GitHub README.md 用于回购)获取的降价内容。
现在,默认情况下,react-markdown(基于 remarkjs)使用 HTML <img> 标记来标记降价图像 (![]())。我想在用户提供的降价中使用new <Image /> component released in Next.js 10。另外,我还想用相应的 Chakra UI 组件替换其他标签。
我该怎么做?
解决方案
// utils/parser.tsx
import Image from 'next/image';
export default function ImageRenderer({ src, alt }) {
return <Image src={src} alt={alt} unsized />;
}
然后在需要的页面中:
//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 }) {
return <ReactMarkdown allowDangerousHtml={true} renderers={{ image: imageRenderer }} children={readme} />
}
其他元素也一样...
【问题讨论】:
标签: reactjs markdown next.js remarkjs chakra-ui