我想在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>
You have {" "}
{remaining}$ {" "}
from{" "}
{total}$
<Text>
(因为我自己看得更清楚)
其他回答
https://stackoverflow.com/a/44845810/10480776 @Edison D'souza的答案正是我一直在寻找的。但是,它只是替换字符串的第一次出现。下面是我处理多个<br/>标签的解决方案:
<Typography style={{ whiteSpace: "pre-line" }}>
{shortDescription.split("<br/>").join("\n")}
</Typography>
抱歉,由于声誉评分限制,我无法评论他的帖子。
在数组中定义的文本行之间插入<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;
如果您要显示来自状态变量的数据,请使用此方法。
<Text>{this.state.user.bio.replace('<br/>', '\n')}</Text>
如果你想在元素中使用变量,你可以试试这个。
<文本> {newText} < /短信>
const newText= text.body.split("\n")。Map ((item, key) => { 回报( < span关键={关键}> {项} < br / > < / span > ); });
你也可以把它作为一个常量添加到你的渲染方法中,这样很容易重用:
render() {
const br = `\n`;
return (
<Text>Capital Street{br}Cambridge{br}CB11 5XE{br}United Kingdom</Text>
)
}