我需要将\n
替换为<br>
。但它正如文本中那样。
如何在不使用dangerouslySetInnerHTML
的情况下执行此操作?
答案 0 :(得分:9)
像往常一样插入文字,并fix the line breaks with CSS:
white-space: pre-wrap;
不要使用dangerouslySetInnerHTML
,除非真的必须这样做。
答案 1 :(得分:2)
此解决方案将\n
替换为<br>
,无法使用dangerouslySetInnerHTML
:
render: function() {
var lines = this.props.text.split("\\n").map(function(line, n){
return (n == 0) ? [line] : [<br />, line];
});
return <div>{lines}</div>;
}
但是如果你需要HTML格式化,并且你确信你的文字是安全的XSS ,我建议坚持使用dangerouslySetInnerHTML
和像克里斯霍克斯这样的正则表达式取代。
答案 2 :(得分:0)
您可以使用style={{whiteSpace: 'pre-wrap'}}
来包装div。
现在,您将在没有dangerouslySetInnerHTML
和<BR>
的情况下换行
您可以在此处检查浏览器的兼容性:CSS SPEC
答案 3 :(得分:-1)
var yourNewValueWithBr = yourOldValue.replace(/\n/g,"<br />");
替换此文本后,您需要使用dangerouslySetInnerHTML将其呈现为HTML。