Jim*_*ers 12 javascript ecmascript-6 reactjs
我想,以取代每/n
一个<br>
的标签ReactJS
。在我的note.note
对象中有一个带有多个的字符串/n
。
示例note.note: test\ntest\ntest
我尝试过的ReactJS
:
{
note.note.split('\n').map(function( item, idx) {
return (
<span key={idx}>
{item}
<br/>
</span>
)
})
}
Run Code Online (Sandbox Code Playgroud)
Tom*_*ats 41
另一种方法是使用 css 以换行符显示它。这也使复制和粘贴原始换行符以及区分一个中断 ( \n
) 和两个中断 ( \n\n
)变得更容易。
只需将样式添加white-space: pre-wrap;
到您的元素中即可。
<div style={{whiteSpace: "pre-wrap"}}>{note.note}</div>
Run Code Online (Sandbox Code Playgroud)
如果这不能完全满足您的要求,还有其他空白选项:https : //developer.mozilla.org/en-US/docs/Web/CSS/white-space
tom*_*rod 20
您的代码运行良好:
{
note.note.split("\n").map(function(item, idx) {
return (
<span key={idx}>
{item}
<br/>
</span>
)
})
}
Run Code Online (Sandbox Code Playgroud)
笔记:
OP 问题在于后端返回
\\n
并显示\n
在XHR preview
选项卡中
我只是想分享这个我已经使用了一段时间的功能。它与 Jim Peeters 的答案类似,但没有生成父标签,只是将\n
转向<br key="<index here>" />
。
import React from 'react'
export const escapedNewLineToLineBreakTag = (string) => {
return string.split('\n').map((item, index) => {
return (index === 0) ? item : [<br key={index} />, item]
})
}
Run Code Online (Sandbox Code Playgroud)
您还可以通过省略 和 大括号将其转换为较长的一行return
。
export const escapedNewLineToLineBreakTag = (string) => string.split('\n').map((item, index) => (index === 0) ? item : [<br key={index} />, item])
Run Code Online (Sandbox Code Playgroud)
免责声明:背后的逻辑不是来自我,但我不记得在哪里找到它。我只是把它变成了函数形式。
归档时间: |
|
查看次数: |
11348 次 |
最近记录: |