使用 JSX 将代码渲染到页面,同时保留换行符
render code to page using JSX whilst preserving line breaks
我正在尝试使用一个包含大量代码的字段,其中包含换行符和制表符。我希望它呈现并保留制表符和换行符。
基本上我希望它在输出时看起来像代码在堆栈溢出中被格式化。当我使用字符串文字时,它不会保留制表符和换行符。
下面是我的代码
import React, { useContext } from 'react'
import FunctionalContext from '../../context/functional/functionalContext';
const FunctionalComponent = () => {
const functionalContext = useContext(FunctionalContext);
return (
<div>
<h1>Classes</h1>
<h2>Classes</h2>
<code>{`
import React from 'react'
constructor() {
super()
`}
</code>
</div>
)
}
export default FunctionalComponent
默认情况下,code
元素未预先设置格式。您可以应用 white-space
styles to it, or put it in a pre
元素之一。
不过,我认为您很难以有用的方式呈现选项卡。您可能希望在输出之前将它们扩展到作者使用的任何制表位。
使用示例<pre><code>...</code></pre>
:
const Example = () => {
const code =
`
import React from 'react';
class Foo extends React.Component {
constructor() {
super();
}
}`;
return (
<div>
<h1>Classes</h1>
<h2>Classes</h2>
<pre><code>{code}</code></pre>
</div>
);
}
ReactDOM.render(<Example/>, document.getElementById("root"));
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.10.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.10.2/umd/react-dom.production.min.js"></script>
使用 white-space
样式的示例:
const Example = () => {
const code =
`
import React from 'react';
class Foo extends React.Component {
constructor() {
super();
}
}`;
return (
<div>
<h1>Classes</h1>
<h2>Classes</h2>
<code className="block">{code}</code>
</div>
);
}
ReactDOM.render(<Example/>, document.getElementById("root"));
.block {
display: block;
white-space: pre;
}
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.10.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.10.2/umd/react-dom.production.min.js"></script>
我还包含了 display: block
因为默认情况下 code
是内联的。
我正在尝试使用一个包含大量代码的字段,其中包含换行符和制表符。我希望它呈现并保留制表符和换行符。
基本上我希望它在输出时看起来像代码在堆栈溢出中被格式化。当我使用字符串文字时,它不会保留制表符和换行符。
下面是我的代码
import React, { useContext } from 'react'
import FunctionalContext from '../../context/functional/functionalContext';
const FunctionalComponent = () => {
const functionalContext = useContext(FunctionalContext);
return (
<div>
<h1>Classes</h1>
<h2>Classes</h2>
<code>{`
import React from 'react'
constructor() {
super()
`}
</code>
</div>
)
}
export default FunctionalComponent
默认情况下,code
元素未预先设置格式。您可以应用 white-space
styles to it, or put it in a pre
元素之一。
不过,我认为您很难以有用的方式呈现选项卡。您可能希望在输出之前将它们扩展到作者使用的任何制表位。
使用示例<pre><code>...</code></pre>
:
const Example = () => {
const code =
`
import React from 'react';
class Foo extends React.Component {
constructor() {
super();
}
}`;
return (
<div>
<h1>Classes</h1>
<h2>Classes</h2>
<pre><code>{code}</code></pre>
</div>
);
}
ReactDOM.render(<Example/>, document.getElementById("root"));
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.10.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.10.2/umd/react-dom.production.min.js"></script>
使用 white-space
样式的示例:
const Example = () => {
const code =
`
import React from 'react';
class Foo extends React.Component {
constructor() {
super();
}
}`;
return (
<div>
<h1>Classes</h1>
<h2>Classes</h2>
<code className="block">{code}</code>
</div>
);
}
ReactDOM.render(<Example/>, document.getElementById("root"));
.block {
display: block;
white-space: pre;
}
<div id="root"></div>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.10.2/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.10.2/umd/react-dom.production.min.js"></script>
我还包含了 display: block
因为默认情况下 code
是内联的。