コンテキスト: Chakra UIを備えたNext.jsサイトがあります。実行時に外部ソース (レポの GitHub など) からフェッチされるユーザー提供のマークダウン コンテンツがいくつかあります。README.md
現在、react- markdown ( remarkjsに基づく) はデフォルトで、マークダウン画像 ( ) に HTML<img>タグを使用します![]()。ユーザー提供のマークダウンで、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 />;
}
次に、必要なページで:
//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} />
}
他の要素も同じ...