У вас есть несколько вариантов:
1) Использование элемента уровня блока, таких как div
или p
и обернуть каждую строку.
var TextLines = React.createClass({
render: function() {
var lines = this.props.lines;
var formatted = lines.map(function(line) {
return (<p>{line}</p>);
});
return (<div>{ formatted }</div>);
}
});
var lines = ['line 1', 'line 2', 'line 3'];
React.render(<TextLines lines={ lines }/>,
document.getElementById('container'));
2) Используйте промежуток с br
элемента:
var TextLines = React.createClass({
render: function() {
var lines = this.props.lines;
var br = lines.map(function(line) {
return (<span>{line}<br/></span>);
});
return (<div>{ br }</div>);
}
});
var lines = ['line 1', 'line 2', 'line 3'];
React.render(<TextLines lines={ lines } />,
document.getElementById('container'));
3) Если вы уверены, что нет никакой угрозы XSS/хаки с данными, вы можете использовать dangerouslySetInnerHTML
с ' ш»для каждой строки:
var TextLines = React.createClass({
render: function() {
var lines = this.props.lines;
var content = {
__html: lines.join('<br />')
};
return (<div dangerouslySetInnerHTML={ content } />);
}
});
var lines = ['line 1', 'line 2', 'line 3'];
React.render(<TextLines lines={ lines } />,
document.getElementById('container'));
последняя производит наименьшее количество HTML, но при стоимости потенциально рискованной безопасности веб-страницы/пользователя. Я бы не использовал этот, если другие работают на вас.
Если вы задаете только почему (что вы делаете в данный момент, по крайней мере), это дубликат [ Почему браузер отображает новую строку как пространство?] (Http://stackoverflow.com/q/588356/218196). –
Спасибо, я обновил вопрос. –