乐闻世界logo
搜索文章和话题

How to preserve Markdown whitespace inside JSX?

4 个月前提问
4 个月前修改
浏览次数20

1个答案

1

在JSX中保留Markdown的空格,通常需要使用 HTML 中的一些特殊实体或者在 CSS 中进行样式设置。这样可以避免 HTML 默认的压缩空格的行为。以下是两种常见的方法:

方法一:使用 HTML 实体

在 JSX 中直接使用 HTML 的特殊空格实体,如  (非断行空格)来替代普通空格。这种方法适用于需要在文本中插入固定数量的空格。例如,如果你想在两个词之间加两个空格:

jsx
function MyComponent() { return <p>这是一个例子&nbsp;&nbsp;展示如何使用空格</p>; }

方法二:使用 CSS

通过 CSS 的 white-space 属性来控制如何处理空格。设置 white-space: pre; 可以保留空格和换行符,就像在 <pre> 元素中一样。

jsx
function MyComponent() { return <p style={{ whiteSpace: 'pre' }}> 这是一个例子 展示如何使用空格 </p>; }

这种方法比使用 HTML 实体更灵活,特别适用于文本块中需要保留格式的情况。

示例应用场景

假设你在开发一个博客应用,其中用户输入的内容需要按照他们原始的格式展示,包括空格和换行。这时候,使用 CSS 的 white-space: pre-wrap; 属性可以很好地解决这个问题,因为它既保留空格和换行,又能自动换行以适应容器宽度。

jsx
function BlogPost(props) { return <div style={{ whiteSpace: 'pre-wrap' }}>{props.content}</div>; } // 使用时 const postContent = `这是一个很长的博客文章, 它的格式需要被完整地保留。 包括这些 故意的空格。`; <BlogPost content={postContent} />

这样,博客文章就能按照用户的输入格式正确显示,包括所有的空格和换行。

2024年7月26日 22:08 回复

你的答案