Ответ 1
Это должно сделать это:
<Text>
Hi~{"\n"}
this is a test message.
</Text>
Я хочу вставить новую строку (например,\r\n, < br/ > ) в компонент Text в React Native.
Если у меня есть:
<text><br />
Hi~<br >
this is a test message.<br />
</text>
Затем React Native делает Hi~ this is a test message.
Возможно ли сделать текст для добавления новой строки следующим образом:
Hi~
this is a test message.
Это должно сделать это:
<Text>
Hi~{"\n"}
this is a test message.
</Text>
Вы также можете сделать:
<Text>{`
Hi~
this is a test message.
`}</Text>
Легче, на мой взгляд, потому что вам не нужно вставлять материал в строку; просто оберните его один раз, и он сохранит все ваши разрывы строк.
Использование:
<Text>{'Hi,\nCurtis!'}</Text>
Результат:
Привет,
Кертис!
Это сработало для меня
<Text>{`Hi~\nthis is a test message.`}</Text>
(реакция-родная 0.41.0)
Если вы вообще показываете данные из переменных состояния, используйте это.
<Text>{this.state.user.bio.replace('<br/>', '\n')}</Text>
Вы можете использовать {'\n'}
как разрывы строк. Привет ~ {'\n'} это тестовое сообщение.
Еще лучше: если вы используете 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>
);
}
}
Вы можете попробовать использовать это
<text>{'${val}\n'}</text>
Мне понадобилось однострочное решение, разветвляющееся в тернарном операторе, чтобы мой код был отлично отступом.
{foo ? `First line of text\nSecond line of text` : `Single line of text`}
Подсветка подсветки синтаксиса помогает выделить символ прерывания строки:
Вы можете использовать '' следующим образом:
<Text>{'Hi~
this is a test message.'}</Text>
Вы можете сделать это следующим образом:
{'Создать\nВаш аккаунт'}
Вы также можете просто добавить его как константу в свой метод рендеринга, чтобы его было легко использовать повторно:
render() {
const br = '\n';
return (
<Text>Capital Street{br}Cambridge{br}CB11 5XE{br}United Kingdom</Text>
)
}
Я использую реагировать JS. ни один из приведенных выше ответов не сработал для меня одного, но вместе взятых. это должно вероятно работать на родном также. код ниже,
//реагируем js
<div style={{ whiteSpace: 'pre-wrap' }}>
<text>{'hello \nthere'}</text>
</div>
//нативный (не проверял, но технически должен работать..)
<View style={{ whiteSpace: 'pre-wrap' }}>
<Text>{'hello \nthere'}</Text>
</View
Вы можете добавить .replace
в конец строки. например.
<Text style={styles.cellTitle} numberOfLines={2}>
{item.name.replace('\n', ' ')}
</Text>
Это заменит \n на одно место.
В случае, если кто-то ищет решение, в котором вы хотите иметь новую строку для каждой строки в массиве, вы можете сделать что-то вроде этого:
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
Просто используйте {"\n"} там, где вы хотите разбить строку
Добавление закрывающего тега к разрыву строки jsx, казалось, сработало для меня.
<text>First Line<br></br>Second Line</text>
Выход:
First Line Second Line
Используйте \n
в тексте и css white-space: pre-wrap;