从保存的文本区域中响应显示换行符
2022-08-30 04:56:43
使用脸书 .在设置页面中,我有一个多行,用户可以在其中输入多行文本(在我的情况下,是地址)。React
textarea
<textarea value={address} />
当我尝试显示地址时,例如,它不会显示换行符,并且全部位于一行上。{address}
<p>{address}</p>
任何想法如何解决这个问题?
使用脸书 .在设置页面中,我有一个多行,用户可以在其中输入多行文本(在我的情况下,是地址)。React
textarea
<textarea value={address} />
当我尝试显示地址时,例如,它不会显示换行符,并且全部位于一行上。{address}
<p>{address}</p>
任何想法如何解决这个问题?
没有理由使用JS。您可以使用空格 CSS 属性轻松告诉浏览器如何处理换行符:
white-space: pre-line;
前期生产线
空格序列已折叠。换行符、处 处和填充换行框时将根据需要换行。
<br>
看看这个演示:
<style>
#p_wrap {
white-space: pre-line;
}
</style>
<textarea id="textarea"></textarea>
<p id="p_standard"></p>
<hr>
<p id="p_wrap"></p>
<script>
textarea.addEventListener('keypress', function(e) {
p_standard.textContent = e.target.value
p_wrap.textContent = e.target.value
})
</script>
这是预料之中的,您需要将新行 (\n) 字符转换为 HTML 换行符
一篇关于在 react 中使用它的文章:React Newline to break (nl2br)
引用文章:
因为你知道 React 中的所有内容都是函数,所以你真的不能这样做
this.state.text.replace(/(?:\r\n|\r|\n)/g, '<br />')
由于这将返回一个包含DOM节点的字符串,因此也不允许这样做,因为必须只是一个字符串。
然后,您可以尝试执行如下操作:
{this.props.section.text.split(“\n”).map(function(item) { return ( {item} <br/> ) })}
这也是不允许的,因为 React 是纯函数,两个函数可以彼此相邻。
tldr.溶液
{this.props.section.text.split(“\n”).map(function(item) { return ( <span> {item} <br/> </span> ) })}
现在,我们将每个换行符包装在一个跨度中,这工作正常,因为 span 具有内联显示。现在我们得到了一个有效的 nl2br 换行解决方案