在React中,如何将包含换行符的字符串替换为BR标签

太长不看

只要利用Array.prototype.map()的索引,我发现可以进行条件分支。

请用中文进行重新表述,以下为一个选项:

内容

在React的JSX中,无法将换行符显示为UI上的换行。
另外,仅进行简单的字符串替换时,无法将
作为DOM进行识别,而只会将其作为普通字符串显示。

就处理方法而言,有各种各样的方法可以考虑。

 

就我个人而言,使用for循环的方法看起来简单而有效,但我仍然担心最后会留下一个`
`。

export const MultiLines = props => {
  const { text } = props;
  const lines = text.split(/\r?\n/);

  return (
    <>
      {lines.map((line: string, index: number) => (
        <React.Fragment key={index}>
          {line}<br />
        </React.Fragment>
      ))}
    </>
  );
};

提出处理方案

我认为在使用Array.prototype.map()时,可以利用索引,只在绘制除最后一个元素以外的元素时插入换行符”
“。

export const MultiLines = props => {
  const { text } = props;
  const lines = text.split(/\r?\n/);

  return (
    <>
      {lines.map((line: string, index: number) => (
        <React.Fragment key={index}>
          {line}
          {index + 1 !== lines.length && <br />}
        </React.Fragment>
      ))}
    </>
  );
};

在CodePen上查看Morichan(@Morichan-the-sasster)的代码,将文本按换行符分割并转换为BR标签。

广告
将在 10 秒后关闭
bannerAds