我想在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组件有一个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%的文本
其他回答
Use:
<Text>{`Hi,\nCurtis!`}</Text>
结果:
你好, 柯蒂斯!
解决方案1:
<Text>
line 1{"\n"}
line 2
</Text>
解决方案2:
<Text>{`
line 1
line 2
`}</Text>
解决方案3:
以下是我处理多个<br/>标签的解决方案:
<Text style={{ whiteSpace: "pre-line" }}>
{"Hi<br/> this is a test message.".split("<br/>").join("\n")}
</Text>
解决方案4:
使用maxWidth自动换行
<Text style={{ maxWidth:200}}>this is a test message. this is a test message</Text>
编辑:
如果你使用模板字面值(参见<Text>元素),你也可以像这样添加换行符:
import React, { Component } from 'react';
import { Text, View } from "react-native";
export default class extends Component {
(...)
render(){
return (
<View>
<Text>{`
1. line 1
2. line 2
3. line 3
`}</Text>
</View>
);
}
}
React不喜欢你把HTML <br />放在它需要文本的地方,而且\ns并不总是被渲染,除非在<pre>标记中。
也许可以像这样将每个断行字符串(段落)包装在<p>标记中:
{text.split("\n").map((line, idx) => <p key={idx}>{line}</p>)}
如果你在迭代React组件,不要忘记键。
有时我会这样写:
<Text>
You have {" "}
{remaining}$ {" "}
from{" "}
{total}$
<Text>
(因为我自己看得更清楚)