我想在React Native的文本组件中插入一个新行(如\r\n, <br />)。
如果我有:
<text>
<br />
Hi~<br />
this is a test message.<br />
</text>
然后React Native渲染Hi~这是一个测试消息。
它是可能的渲染文本添加一个新的行像这样:
Hi~
this is a test message.
我想在React Native的文本组件中插入一个新行(如\r\n, <br />)。
如果我有:
<text>
<br />
Hi~<br />
this is a test message.<br />
</text>
然后React Native渲染Hi~这是一个测试消息。
它是可能的渲染文本添加一个新的行像这样:
Hi~
this is a test message.
当前回答
你还可以:
<Text>{`
Hi~
this is a test message.
`}</Text>
在我看来更简单,因为你不需要在字符串中插入东西;只要换行一次,就能保留所有换行符。
其他回答
这应该做到:
<Text>
Hi~{"\n"}
this is a test message.
</Text>
这段代码适用于我的环境。(react-native 0.63.4)
const charChangeLine = `
`
// const charChangeLine = "\n" // or it is ok
const textWithChangeLine = "abc\ndef"
<Text>{textWithChangeLine.replace('¥n', charChangeLine)}</Text>
结果
abc
def
2021,这适用于REACT状态值(你必须添加空divs,就像返回语句一样)
这一点。setState({form:(<> line 1 <br /> line 2 </>)})
在数组中定义的文本行之间插入<br>的另一种方法:
import react, { Fragment } from 'react';
const lines = [
'One line',
'Another line',
];
const textContent =
lines.reduce(items, line, index) => {
if (index > 0) {
items.push(<br key={'br-'+index}/>);
}
items.push(<Fragment key={'item-'+index}>{line}</Fragment>);
return items;
}, []);
然后文本可以作为变量使用:
<Text>{textContent}</Text>
如果不可用,Fragment可以这样定义:
const Fragment = (props) => props.children;
React不喜欢你把HTML <br />放在它需要文本的地方,而且\ns并不总是被渲染,除非在<pre>标记中。
也许可以像这样将每个断行字符串(段落)包装在<p>标记中:
{text.split("\n").map((line, idx) => <p key={idx}>{line}</p>)}
如果你在迭代React组件,不要忘记键。