2017-02-21 63 views
0

我从服务器使用API​​输出文本,并且我有一个管理员,它具有用于促进填充内容的html字段。现在的问题在这里,文字显示与HTML代码。我如何摆脱那些不合格的HTML代码。我想我必须使用html实体解码?我将如何在反应项目中实施?下面你会看到文本不仅能够说明文本和html代码。在react.js中实现HTML实体解码

enter image description here

export class FullInfoMedia extends React.Component { 
    render() { 
     const renderHTML = (escapedHTML: string) => React.createElement("div", { dangerouslySetInnerHTML: { __html: escapedHTML } }); 

     return (
      <div> 
       <div className="about-title"> 
        <div className="container"> 
         <div className="row"> 
          <img className="center-block" src={this.props.about.image}/> 

          <h2>{this.props.about.title}</h2> 
          {renderHTML(<p>{this.props.about.body}</p>)} 
         </div> 
        </div> 
       </div> 
      </div> 
     ); 
    } 
} 
+0

使用dangerouslySetInnerHTML –

回答

6

您可以使用dangerouslySetInnerHTML,但可以肯定,你只渲染你的输入,而不是用户。它可以是XSS的好方法。

使用的示例:

const renderHTML = (rawHTML: string) => React.createElement("div", { dangerouslySetInnerHTML: { __html: rawHTML } }); 

,然后在组分:

{renderHTML("<p>&amp;nbsp;</p>")} 
+0

所以,例如代码应如下所示的代码中的上方。我只是补充说,请问您可以查看 – Feruza

+0

,但现在它只渲染单词“[object Object]” – Feruza

+0

renderHTML函数的输入必须是字符串,而不是对象。您正在拨打'

...

',但您需要拨打''

...

“'(带引号)。 –