React生态系统中的安全字符串输出

时间:2017-12-27 18:18:45

标签: html string reactjs escaping

如果你想在React视图中将°F这样的字符串显示为°F,我已经找到了记录的方法来执行以下操作:

import React from 'react';

export default function renderSafeHTML(rawHTML, element = 'div') {
  return React.createElement(element, {
    dangerouslySetInnerHTML: {
      __html: rawHTML
    }
  });
}

使用类似的东西:

{renderSafeHTML('°F')}

生态系统中是否有任何类型的助手来简化转义内容? Ember有{{content}}用于转义,{{{content}}}用于显示没有转义的内容,.safeString用于标记字符串是安全的。

React有类似的东西吗?我很想知道尝试将此功能添加到JSX {}{{}},类似于Ember。为什么在React中不存在这个?

2 个答案:

答案 0 :(得分:2)

我正在使用react 16x

你不需要unicode的助手 - 你可以直接在JSX中嵌入unicode字符

<h1>40{'\u00B0'}F</h1>

<h1>40&deg;F</h1>

这将告诉您需要知道的一切:

https://shripadk.github.io/react/docs/jsx-gotchas.html#html-entities

答案 1 :(得分:1)

我相信React希望你知道它的危险性。他们希望你努力输入所有这些。他们不想让事情变得更容易。

这取自他们的文档:

  

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

https://reactjs.org/docs/dom-elements.html#dangerouslysetinnerhtml