>
現在、私はNext.jsでブログシステムを開発しているのですが、記事の中に挿入するコンポーネントとdangerouslySetInnerHTMLの課題に悩まされていました。 正規表現を使用して、記事の文字列をコンポーネントとそれ以外のHTMLに分割していたのですが、dangerouslySetInnerHTMLは、閉じタグまで含める必要があるため、以下のように要素の中にコンポーネントを配置している場合、分割できません。どのように処理すれば良いのか私には思いつきませんでした。
<div class="border p-4">
<MyComponent />
</div>
また、コンポーネントの数だけ、記事の文字列から抽出するためのコードを書く必要があるのも煩わしく感じていました。それらの悩みがライブラリ『next-mdx-remote』で全て解決しました。
以下の記事をご覧ください。
next-mdx-remoteの導入方法は、公式ドキュメントを見ればすぐにわかるので、説明するまでもありませんが、コードを載せておきます。
hashicorp/next-mdx-remote: Load MDX content from anywhere
npm i next-mdx-remote
import React from 'react';
import { MDXRemote } from 'next-mdx-remote/rsc';
// Components
import Link from 'next/link';
import Image from 'next/image';
import Snippet from '@/components/snippet';
import LinkCard from '@/components/link-card';
import CodeBlock from '@/components/code-block';
const components = { Link, Image, Snippet, LinkCard, CodeBlock };
const BlogContent = ({
content,
}: {
content: string,
}) => {
return (
<MDXRemote
source={content}
components={components}
/>
);
}
export default BlogContent;
MDXめちゃめちゃ楽!!