我想在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 style={{styles.text}}>{`Hi~\nthis is a test message.`}</Text>

其他回答

简单使用反勾号(es6特性)

解决方案1

const Message = 'This is a message';

<Text>
{`
  Hi~
  ${Message}
`}
</Text>

解决方案2在文本中添加“\n”

<Text>
Hi~{"\n"}
This is a message.
</Text>

最干净和最灵活的方法之一是使用模板字面量。

使用它的一个优点是,如果你想在文本体中显示字符串变量的内容,它更干净和直接。

(请注意使用反引号)

const customMessage = 'This is a test message';
<Text>
{`
  Hi~
  ${customMessage}
`}
</Text>

会导致

Hi~
This is a test message

如果你从状态变量或道具中获取数据,Text组件有一个minWidth, maxWidth样式道具。

例子

const {height,width} = Dimensions.get('screen');

const string = `This is the description coming from the state variable, It may long thank this` 

<Text style={{ maxWidth:width/2}}>{string}</Text>

这将显示屏幕宽度的50%的文本

如果你想在元素中使用变量,你可以试试这个。

<文本> {newText} < /短信>

const newText= text.body.split("\n")。Map ((item, key) => { 回报( < span关键={关键}> {项} < br / > < / span > ); });

为什么这么努力工作?现在是2020年,创建一个组件来处理这类问题

    export class AppTextMultiLine extends React.PureComponent {
    render() {
    const textArray = this.props.value.split('\n');
return (
        <View>
            {textArray.map((value) => {
               return <AppText>{value}</AppText>;
            })}
        </View>
    )
}}