如何在React中呈现多行文本字符串

假设我有一个包含换行符的文本字符串,我将其渲染为:

render() {
    var text = "One\nTwo\nThree";
    return <div>{text}</div>;
}

在HTML中,换行符不呈现为换行符。我应该如何在React中做到这一点?我不想转换为<br>标签并使用dangerouslySetInnerHTML还有另一种方法吗?

阳光番长2020/03/16 15:23:36

您可以-webkit-user-modify: read-write-plaintext-only;在div中使用例如,它将格式化并理解\ n和\ p之类的内容。

西门斯丁2020/03/16 15:23:36

在普通的html文本区域内呈现定界文本“我的第一行\我的第二行\ nWhatevs ...”。我知道它有效,因为我今天才使用它!如有必要,将文本区域设置为readOnly,并相应地设置样式。

卡卡西Sam2020/03/16 15:23:36

这里是最干净的解决方案(afaik):

   render(){
      return <pre>
             Line 1{"\n"}
             Line 2{"\n"}
             Line 3{"\n"}
      </pre>
   }

而不是您也可以使用<div style={{whiteSpace:"pre"}}>或任何其他html块元素(例如spanp具有此style属性)

2020/03/16 15:23:36

您可以使用CSS属性“ white-space:pre”。我认为这是处理此问题的最简单方法。

神乐神无2020/03/16 15:23:36

您可以尝试将div插入每行

render() {
    return (<div>
        <div>{"One"}</div>
        <div>{"Two"}</div>
        <div>{"Three"}</div>
    </div>);
}

要么

render() {
    var text = "One\nTwo\nThree";
    return (
    <div>
        {text.split("\n").map((i,key) => {
            return <div key={key}>{i}</div>;
        })}
    </div>);
}