我在网站上使用的自定义字体类似于Font Awesome,具有简单的签名:
<i className="icon-plus"></i>
但是我想创建自己的组件,该组件将呈现动态HTML实体,例如:
const iconEntity = '' // (Font Awesome HTML entity example)
const icon1 = '' // dynamic entities
class OwnIcon extends React.Component {
render() {
return <i>{iconEntity}</i>
}
}
但这不起作用。阅读此post后,我使用dangerouslySetInnerHTML
进行了尝试,它可以正常工作,例如:
const iconEntity = ''
class OwnIcon extends React.Component {
render() {
return <i className="icon" dangerouslySetInnerHTML={{__html: iconEntity }}></i>
}
}
但这是一个难看的解决方案。 阅读JSX gotchas后,我发现有类似的解决方案:
A safer alternative is to find the unicode number corresponding to the entity and use it inside of a JavaScript string:
<div>{'First \u00b7 Second'}</div>
<div>{'First ' + String.fromCharCode(183) + ' Second'}</div>
但是我该如何转换(例如Font Awesome)Unicode专用字符"\f007"
或HTML十六进制实体
以获取unicode号以摆脱dangerouslySetInnerHTML
并渲染图标以更“清晰”的方式?
文字示例:here
答案 0 :(得分:0)
将其放入Fragment
中,这样该值将变为JSX,并将输出为HTML:
const iconEntity = <Fragment></Fragment>
class OwnIcon extends React.Component {
render() {
return <i className="icon">{iconEntity}</i>
}
}
当然,这样做的缺点是您不会说“让我们变得危险!”像黑翼鸭一样。 ;)