我正在努力实现类似于这个问题的东西 How do I include a font awesome icon in my svg?
但我有10个图标,它们具有相似的结构,但只有图标不同 我已经返回一个函数来生成unicode字符 如
static renderIcon (status) {
if (status === 'RED') {
return ''
} else if (status === 'GREEN') {
return ''
} else if (status === YELLOW') {
return ''
}
}
static renderTextWithIcon = (obj) => {
return (
<text x={params.cx} y={params.cy}
className={ css.color}
>
{Utils.renderStatusIconContent(obj.status)}
</text>
)
}
但如果我尝试在没有引号的情况下将字符串呈现为“”,则会将字符串呈现为“”并显示图标,但我必须为每种颜色重复相同的代码 有人可以帮助编写一个以unicode字符为参数的函数吗?
答案 0 :(得分:1)
如果我找到你,你需要使用dangerouslySetInnerHTML
,这样你的unicode字符就不会被转义。
<text x={params.cx} y={params.cy}
className={ css.color}
dangerouslySetInnerHTML={{__html: Utils.renderStatusIconContent(obj.status) }}
/>
答案 1 :(得分:0)
@AlexM感谢您的解决方案 但我以一种不同的方式解决了这种情况 我这样做了
static iconObj = {
Right: '\uf126',
Wrong: '\uf121',
};
我正在将其渲染为
<text x={params.cx} y={yParam}
dy=".25em"
onClick={onClick}>
{iconObj[color]}
</text>
这解决了我现在的问题。