在 React 的危险设置的内部 html 中添加图标

Posted

技术标签:

【中文标题】在 React 的危险设置的内部 html 中添加图标【英文标题】:Add Icon in dangerously set Inner html in React 【发布时间】:2021-12-22 19:20:43 【问题描述】:

我试图在 div 标签工作时使用危险设置的内部 html 在字符串文本之间添加一个图标,但右箭头图标(来自材料 ui)不起作用。还注意到在呈现实际 html 时它会变成小写。

这是我的代码 strPath 之一是 "世界->美洲->拉丁美洲和加勒比"

let keyArray = Object.keys(selectedRegionsLocal);
    let listUI = [];
    for (let i = 0; i < keyArray.length; i++) 
        let strPath = selectedRegionsLocal[keyArray[i]].path;
        const pieces = strPath.split("->");
        let result = pieces.join(" <ArrowRightIcon></ArrowRightIcon> ")
        let fresult = '<div>' + result + '</div>';
        console.log('result ', fresult);
        listUI.push(
            <Grid dangerouslySetInnerHTML= __html: fresult  />
        )
    
    return listUI;

这就是我在开发工具中得到的 -> 元素部分

实际价值图片

我该怎么做才能把上面的实际值变成这个

【问题讨论】:

使用 dangerouslySetInnerHTML 你可以注入 html 而不是 React 组件,&lt;ArrowRightIcon&gt; 看起来像一个反应组件。尝试使用 html 【参考方案1】:

您可以简单地在每个项目上放置一个图标:

假设您的keyArray 是这样的:

const keyArray = ["World", "Americas", "South", "America"];

现在,您可以使用map 函数为每个项目添加一个图标:

const result = data.map((item, i) => (
  <div key=i>
    <ArrowRightIcon />
    <span>item</span>
  </div>
));

现在,result 可以使用了,带有父 divflex 样式,将产生最终结果:

<div style= display: "flex" >result</div>

【讨论】:

以上是关于在 React 的危险设置的内部 html 中添加图标的主要内容,如果未能解决你的问题,请参考以下文章

在 React 中更改具有危险设置的 innerhtml 父属性的孩子的图像源属性

在后台从 React 组件制作 HTML 字符串,如何在另一个 React 组件中通过危险的SetInnerHTML 使用该字符串

React JS如何在危险的SetInnerHTML中执行脚本

替代危险的SetInnerHTML

如何危险地使用SetInnerHTML

React 17 - 添加 Evergreen UI 窗格会导致错误:无效的挂钩调用。 Hooks 只能在函数组件的主体内部调用