如何在 React 上使用空白:'pre-wrap'
How to use whiteSpace: 'pre-wrap' on React
如何在 React
上使用 whiteSpace 样式:'pre-wrap'
我有一个 div 需要使用带空格的格式呈现文本
render() {
<div style={{whiteSpace: 'pre-wrap'}}
keep formatting
keep spaces
</div>
}
JSX
折叠空格,在这种情况下你可以像这样使用 dangerouslySetInnerHTML
var Component = React.createClass({
content() {
const text = `
keep formatting
keep spaces
`;
return { __html: text };
},
render: function() {
return <div
style={{ whiteSpace: 'pre-wrap' }}
dangerouslySetInnerHTML={ this.content() }
/>
}
});
注:新版本的React/JSX不需要使用dangerouslySetInnerHTML
const App = () => (
<div style={{ whiteSpace: 'pre-wrap' }}>
{`
keep formatting
keep spaces
keep spaces
`}
</div>
);
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
您可以使用 dangerouslySetInnerHTML
但这很危险。 :) 您还可以做的是将字符串转换为 React 元素,例如渲染换行符:
text.split("\n").map((text, i) => i ? [<br/>, text] : text)
你可以把它做成一个函数或一个组件,比如<MultilineText text={text}/>
。
在我们的案例中,我们还尝试使用 whiteSpace
并发现 none 的选项完全满足了我们的需求。
如何在 React
上使用 whiteSpace 样式:'pre-wrap'我有一个 div 需要使用带空格的格式呈现文本
render() {
<div style={{whiteSpace: 'pre-wrap'}}
keep formatting
keep spaces
</div>
}
JSX
折叠空格,在这种情况下你可以像这样使用 dangerouslySetInnerHTML
var Component = React.createClass({
content() {
const text = `
keep formatting
keep spaces
`;
return { __html: text };
},
render: function() {
return <div
style={{ whiteSpace: 'pre-wrap' }}
dangerouslySetInnerHTML={ this.content() }
/>
}
});
注:新版本的React/JSX不需要使用dangerouslySetInnerHTML
const App = () => (
<div style={{ whiteSpace: 'pre-wrap' }}>
{`
keep formatting
keep spaces
keep spaces
`}
</div>
);
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/15.1.0/react-dom.min.js"></script>
<div id="root"></div>
您可以使用 dangerouslySetInnerHTML
但这很危险。 :) 您还可以做的是将字符串转换为 React 元素,例如渲染换行符:
text.split("\n").map((text, i) => i ? [<br/>, text] : text)
你可以把它做成一个函数或一个组件,比如<MultilineText text={text}/>
。
在我们的案例中,我们还尝试使用 whiteSpace
并发现 none 的选项完全满足了我们的需求。