You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

模板字面量(Template Literal)换行失效问题咨询

解决模板字面量换行不生效的问题

在React中,模板字面量里的换行不会被HTML自动解析——因为HTML默认会忽略文本中的换行和多余空格。下面是几种可行的解决方法:

方法1:使用CSS样式(推荐)

给包含文本的容器添加white-space: pre-line样式,这样HTML会识别文本中的换行符,同时自动合并多余的空格:

.tipbox {
  white-space: pre-line;
}

你的JSX代码不需要修改,保持原模板字面量即可:

<div className='tipbox'>
  <HiOutlineLightBulb style={{marginRight:"10px"}}/>
  {`THIS IS MY FIRST LINE.

THIS IS MY SECOND LINE

THIS IS MY THIRD LINE`}
</div>

方法2:手动添加<br />标签

把模板里的换行替换成<br />,但要注意直接写字符串的话React会把<br />当成纯文本,需要用dangerouslySetInnerHTML渲染:

<div className='tipbox'>
  <HiOutlineLightBulb style={{marginRight:"10px"}}/>
  <div dangerouslySetInnerHTML={{ __html: `THIS IS MY FIRST LINE.<br /><br />THIS IS MY SECOND LINE<br /><br />THIS IS MY THIRD LINE` }} />
</div>

⚠️ 注意:使用dangerouslySetInnerHTML要确保内容安全,避免XSS攻击。

方法3:用<pre>标签包裹文本

<pre>标签会保留文本的原始格式(包括换行和空格),但默认带有等宽字体和滚动条,需要额外调整样式:

<div className='tipbox'>
  <HiOutlineLightBulb style={{marginRight:"10px"}}/>
  <pre>{`THIS IS MY FIRST LINE.

THIS IS MY SECOND LINE

THIS IS MY THIRD LINE`}</pre>
</div>

添加CSS去掉默认样式:

.tipbox pre {
  margin: 0;
  font-family: inherit; /* 继承父元素字体 */
  white-space: pre-line; /* 可选:合并多余空格,只保留换行 */
}

内容的提问来源于stack exchange,提问作者Newbie_developer

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 19:20:47