👌
Next.jsでdangerouslySetInnerHtmlを使わずに改行コード(\n)で改行する方法
dangerouslySetInnerHtmlは危険です。
Next.jsで単純にtext.replace(/\n/g, '<br/>')
で変換するとdangerouslySetInnerHtml
を使う羽目になってしまいます。
そこで今回は安全に改行する方法のメモです。
改行コード + white-spaceでも改行は可能ですが、今回は
を使った改行を紹介します。
import React, { Fragment } from 'react';
type Props = {
text: string
}
export default function Test({ text }: Props) {
const formattedDescription = text.split(/(\n)/).map((item, index) => {
return <Fragment key={index}>{item.match(/\n/) ? <br /> : item}</Fragment>;
});
return (
<div>
<Typography>{formattedDescription}</Typography>
</div>
);
}
Discussion
text.split(/(\n)/)
の部分の正規表現とitem.match(/\n/)
のが正しくない気がします正しいのは
text.split(/\\n/)
とitem.match(/\\n/)
っぽいです