はじめに
APIアクセスで返ってきたエラーメッセージに改行コード\n
が入っているとき、そのままメッセージを出力しても改行が反映されていませんでした。
\n
を<br>
に変換すればええんやろ!と思っていたら、<br>
がただの文字列として出力されただけでした。
問題解決に少々詰まったのでメモとして残します。
問題点
改行コード入りのメッセージを出力しても改行が反映されない。
export const Body = () => {
const body =
'ユニコーンガンダム\nクスィーガンダム\nガンダムF91\nクロスボーンガンダムX1';
return (
<div>
{body}
</div>
);
};
解決策
<br>
タグをJSXで認識できる形にします。
メッセージを改行コード\n
で分割して配列にし、mapメソッドで配列をループすることで<br>
を含んだJSX要素を返すようにします。
export const Body = () => {
const body =
'ユニコーンガンダム\nクスィーガンダム\nガンダムF91\nクロスボーンガンダムX1';
return (
<div>
<MultiLineBody body={body} />
</div>
);
};
const MultiLineBody = ({ body }: { body: string }) => {
const texts = body.split('\n').map((item, index) => {
return (
<React.Fragment key={index}>
{item}
<br />
</React.Fragment>
);
});
return <div>{texts}</div>;
};
参考資料