Answers:
应该这样做:
<Text>
Hi~{"\n"}
this is a test message.
</Text>
<Text>{content}</Text>
?
var Br = React.createClass({ render() { return ( <Text> {"\n"}{"\n"} </Text> ) } })
<Text>{comments}</Text>
我们不能在{\n}
那里使用逻辑。那怎么办
<Component text={"Line1\nLine2"} />
而不是 <Component text="Line1\nLine2" />
(注意添加的花括号)
您也可以这样做:
<Text>{`
Hi~
this is a test message.
`}</Text>
我认为这很容易,因为您不必在字符串中插入内容。只需包装一次,即可保留所有换行符。
white-space: pre-line;
采用:
<Text>{`Hi,\nCurtis!`}</Text>
结果:
你好
柯蒂斯!
如果根本要显示状态变量中的数据,请使用它。
<Text>{this.state.user.bio.replace('<br/>', '\n')}</Text>
更好的是:如果使用styled-components
,则可以执行以下操作:
import React, { Component } from 'react';
import styled from 'styled-components';
const Text = styled.Text`
text-align: left;
font-size: 20px;
`;
export default class extends Component {
(...)
render(){
return (
<View>
<Text>{`
1. line 1
2. line 2
3. line 3
`}</Text>
</View>
);
}
}
您可以按照以下步骤进行操作:
{“创建\ n您的帐户”}
最干净,最灵活的方法之一就是使用Template Literals。
使用此方法的一个好处是,如果要在文本正文中显示字符串变量的内容,它会更简洁明了。
(请注意反引号字符的用法)
const customMessage = 'This is a test message';
<Text>
{`
Hi~
${customMessage}
`}
</Text>
会导致
Hi~
This is a test message
如果有人在寻找一种解决方案,而您想为数组中的每个字符串换行,则可以执行以下操作:
import * as React from 'react';
import { Text, View} from 'react-native';
export default class App extends React.Component {
constructor(props) {
super(props);
this.state = {
description: ['Line 1', 'Line 2', 'Line 3'],
};
}
render() {
// Separate each string with a new line
let description = this.state.description.join('\n\n');
let descriptionElement = (
<Text>{description}</Text>
);
return (
<View style={{marginTop: 50}}>
{descriptionElement}
</View>
);
}
}
请参见小吃以获取实时示例:https://snack.expo.io/@cmacdonnacha/react-native-new-break-line-example
<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;
https://stackoverflow.com/a/44845810/10480776 @Edison D'souza的答案正是我想要的。但是,它只是替换字符串的第一次出现。这是我处理多个<br/>
标签的解决方案:
<Typography style={{ whiteSpace: "pre-line" }}>
{shortDescription.split("<br/>").join("\n")}
</Typography>
抱歉,由于声誉得分的限制,我无法评论他的帖子。
这是使用TypeScript的React(不是React Native)解决方案。
相同的概念可以应用于React Native
import React from 'react';
type Props = {
children: string;
Wrapper?: any;
}
/**
* Automatically break lines for text
*
* Avoids relying on <br /> for every line break
*
* @example
* <Text>
* {`
* First line
*
* Another line, which will respect line break
* `}
* </Text>
* @param props
*/
export const Text: React.FunctionComponent<Props> = (props) => {
const { children, Wrapper = 'div' } = props;
return (
<Wrapper style={{ whiteSpace: 'pre-line' }}>
{children}
</Wrapper>
);
};
export default Text;
用法:
<Text>
{`
This page uses server side rendering (SSR)
Each page refresh (either SSR or CSR) queries the GraphQL API and displays products below:
`}
</Text>
使用\n
文本和CSSwhite-space: pre-wrap;
whiteSpace
列为React Native Text Style Prop。请注意,这不是HTML。
\n
在想换行的地方使用。