You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何为Ag Grid可编辑列的单元格添加编辑图标?

如何为Ag Grid可编辑列的单元格添加编辑图标?

嗨,我懂你碰到的问题了——明明写了HTML字符串想显示编辑图标,结果Ag Grid直接把代码文本打出来了,这属实有点坑。其实原因很简单:在React项目里,Ag Grid的cellRenderer如果返回字符串,会被当作纯文本处理,不会自动解析成HTML元素。给你两个靠谱的解决办法:

方法一:返回JSX元素(推荐,符合React开发习惯)

直接在cellRenderer里返回React元素就行,Ag Grid会正确渲染成对应的DOM节点:

const [columnDefs] = useState([
  {
    field: "title",
  },
  {
    field: "result",
    editable: true,
    cellEditor: "agRichSelectCellEditor",
    cellEditorPopup: true,
    cellEditorParams: {
      values: ["Pass", "Fail", "Completed", "Not Checked"],
    },
    cellRenderer: (params) => (
      <span>
        <i className="fa fa-edit"></i>
        {params.value}
      </span>
    ),
  },
]);

注意这里要用className而不是class,毕竟是React的JSX语法~

方法二:使用dangerouslySetInnerHTML(适合必须用HTML字符串的场景)

如果你因为某些原因一定要用HTML字符串,可以通过dangerouslySetInnerHTML让React解析它,但要注意这个方法存在XSS风险,只有当你能完全控制params.value的内容时才用:

const [columnDefs] = useState([
  {
    field: "title",
  },
  {
    field: "result",
    editable: true,
    cellEditor: "agRichSelectCellEditor",
    cellEditorPopup: true,
    cellEditorParams: {
      values: ["Pass", "Fail", "Completed", "Not Checked"],
    },
    cellRenderer: (params) => {
      const htmlContent = `<span><i class="fa fa-edit"></i>${params.value}</span>`;
      return <div dangerouslySetInnerHTML={{ __html: htmlContent }} />;
    },
  },
]);

另外别忘了确认一下项目里已经正确引入了Font Awesome,不然图标还是显示不出来哦~

备注:内容来源于stack exchange,提问作者Andish

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.21 15:24:34