这是我尝试过的方法以及解决方法。
这有效:
<div dangerouslySetInnerHTML={{ __html: "<h1>Hi there!</h1>" }} />
这不是:
<div dangerouslySetInnerHTML={{ __html: this.props.match.description }} />
description属性只是HTML内容的普通字符串。但是由于某种原因,它呈现为字符串,而不是HTML。
有什么建议么?
我无法npm build
与之合作react-html-parser
。但是,就我而言,我能够成功使用https://reactjs.org/docs/fragments.html。我要求显示一些html unicode字符,但不应将其直接嵌入JSX中。在JSX中,必须从组件的状态中选择它。组件代码段如下所示:
constructor()
{
this.state = {
rankMap : {"5" : <Fragment>★ ★ ★ ★ ★</Fragment> ,
"4" : <Fragment>★ ★ ★ ★ ☆</Fragment>,
"3" : <Fragment>★ ★ ★ ☆ ☆</Fragment> ,
"2" : <Fragment>★ ★ ☆ ☆ ☆</Fragment>,
"1" : <Fragment>★ ☆ ☆ ☆ ☆</Fragment>}
};
}
render()
{
return (<div class="card-footer">
<small class="text-muted">{ this.state.rankMap["5"] }</small>
</div>);
}
您只使用React的危险的SetInnerHTML方法
<div dangerouslySetInnerHTML={{ __html: htmlString }} />
或者,您可以通过这种简单的方法实现更多功能:在React应用程序中呈现HTML原始文件
如果您可以控制{this.props.match.description}并且使用的是JSX。我建议不要使用“ dangerouslySetInnerHTML”。