JSX语法解析变量中的换行符实现换行

在react中,经常会碰到从后端获取到的一段字符串中包含‘\n’换行符的情况,此时,我们要在dom中渲染该字符串,并让其在换行符的地方实现换行。如果直接去使用jsx语法渲染的话,可能不能如你所愿。

jsx引入了dangerouslySetInnerHTML

下面是react官网对dangerouslySetInnerHTML的介绍:

dangerouslySetInnerHTML

dangerouslySetInnerHTMLReact是innerHTML在浏览器DOM中使用的替代品。通常,从代码设置HTML是有风险的,因为很容易无意中将您的用户暴露给跨站点脚本(XSS)攻击。因此,您可以直接从React设置HTML,但是您必须键入dangerouslySetInnerHTML并使用__html键传递对象,以提醒自己这很危险。例如:

function createMarkup() {
  return {__html: 'First \n Second'};
}

function MyComponent() {
  return <div dangerouslySetInnerHTML={createMarkup()} />;
}

上面的代码虽然可以解析出字符串‘First \n Second’中的\n换行符,但如果‘First \n Second’这个字符串是一个变量,我试了一下,并没有解析出换行,而是将\n解析成一个空格,或是将<br />标签解析成[Object],即如:

function createMarkup() {
  let str = 'First \n Second'
  return {__html: str}; // 这里字符串换成变量表示
}

function MyComponent() {
  return <div dangerouslySetInnerHTML={createMarkup()} />;
}

最终,我在react项目中,并没有使用dangerouslySetInnerHTML属性实现解析\n换行符,我发现,如果是字符串变量中包含\n换行符,只需在css样式中加入whiteSpace: 'pre-wrap'即可实现解析\n换行符。例如:

let str = '要解析出换行符\n要解析出换行符'

// ......

<div style={{whiteSpace: 'pre-wrap'}}>{{str}}</div>

CSS white-space 属性

  • 5
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值