Предположим, у меня есть текстовая строка, содержащая разрывы строк, и я визуализирую ее так:
render() {
var text = "One\nTwo\nThree";
return <div>{text}</div>;
}
В HTML разрывы строк не отображаются как разрывы строк. Как мне это сделать в React? Я не хочу конвертировать в <br>
теги и использовать dangerouslySetInnerHTML
. Есть другой способ?
<br>
это могло быть проблемой. Я заметил, что JS Transformer не нравится, если вы не используете<br/>
версию HTML 4.Ответы:
Вы можете попробовать разместить div для каждой строки
render() { return (<div> <div>{"One"}</div> <div>{"Two"}</div> <div>{"Three"}</div> </div>); }
Или же
render() { var text = "One\nTwo\nThree"; return ( <div> {text.split("\n").map((i,key) => { return <div key={key}>{i}</div>; })} </div>); }
источник
<MultilineText>
компонент!<div>
форматировать текстовые строки?<p>
кажется более семантически правильным.Создайте новый CSS-класс
Отобразите свой текст с помощью этого CSS-класса
render() { const text = 'One \n Two \n Three'; return ( <div className="display-linebreak"> {text} </div> ); }
Визуализирует с переносом строки (последовательности пробелов превращаются в один пробел. Текст при необходимости переносится). Как это:
Вы также можете рассмотреть возможность предварительной упаковки. Подробнее здесь ( свойство CSS white-space ).
источник
Вы можете использовать свойство CSS «white-space: pre». Думаю, это самый простой способ справиться с этим.
источник
white-space:pre
имел тот же эффект, что иwhite-space:nowrap
у меня, т.е. текст вышел за пределы своего контейнера. Использованиеwhite-space:pre-wrap
вместо этого решило эту проблему.white-space: pre-line;
Вместо этого используйте .Вот самое чистое решение (афаик):
render(){ return <pre> Line 1{"\n"} Line 2{"\n"} Line 3{"\n"} </pre> }
Вместо этого вы также можете использовать
<div style={{whiteSpace:"pre"}}>
любой другой элемент блока html (например,span
илиp
с этим атрибутом стиля)источник
Попробуй это,
render() { var text = "One\nTwo\nThree"; return <div style={{whiteSpace: 'pre-line'}}>{text}</div>; }
источник
Визуализируйте текст с разделителями «Моя первая строка \ nМоя вторая строка \ nWhatevs ...» внутри обычного текстового поля html. Я знаю, что это работает, потому что использовал его только сегодня! Сделайте textarea доступным только для чтения, если необходимо, и задайте соответствующий стиль.
источник
Вы можете использовать
-webkit-user-modify: read-write-plaintext-only;
в своем div. Например, он будет форматировать и понимать такие вещи, как \ n и \ p.источник
Вы можете использовать тег textarea HTML, позже вы можете добавить стиль к тегу textarea. Это в значительной степени решает все ваши проблемы, включая разрывы строк и пробелы. Cheerzz ...
например: ваш рендер будет выглядеть примерно так, как показано ниже
render() { var text = "One\nTwo\nThree"; return <textarea>{text}</textarea>; }
Вывод:
источник
String.raw
Вместо этого вы можете безопасно работать с этим типом значения.const text = String.raw`One Two Three `
render() { return <div style={{ whiteSpace: "pre" }}>{text}</div> }
Вы также можете просто использовать
<pre>
тег, который фактически делает то же самое, но его семантически менее понятно, если вы уже используете его для других целей в своем приложении.источник
<div style={{ whiteSpace: "break-spaces" }}> {JSON.stringify(state, null, " ")} </div>
источник