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

无法在表格单元格动态插入React图标,遇appendChild Node类型错误

解决表格插入React图标时的appendChild报错问题

你遇到的报错是因为appendChild只能接收真实的DOM节点,但你传入的是字符串形式的JSX代码——React的JSX需要被编译渲染成DOM节点后才能插入到原生DOM结构中,直接传字符串肯定不合法。

下面给两种可行的解决方法:

方法一:用ReactDOM渲染图标到原生DOM元素中

如果你必须用原生DOM操作来插入单元格,可以通过ReactDOM把图标组件渲染到你创建的div里:

import React from 'react';
import ReactDOM from 'react-dom/client';
import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { RiDeleteBin6Line } from '@fortawesome/react-icons/ri';

const iconCell = row.insertCell(4);
const iconDiv = document.createElement('div');
iconCell.appendChild(iconDiv);

// React 18及以上版本写法
const root = ReactDOM.createRoot(iconDiv);
root.render(<FontAwesomeIcon icon={RiDeleteBin6Line} />);

// React 18以下版本写法
// ReactDOM.render(<FontAwesomeIcon icon={RiDeleteBin6Line} />, iconDiv);

方法二:用React JSX直接构建表格(推荐)

在React项目中,更符合规范的方式是直接用JSX来定义表格结构,避免原生DOM操作:

import { FontAwesomeIcon } from '@fortawesome/react-fontawesome';
import { RiDeleteBin6Line } from '@fortawesome/react-icons/ri';

function MyTable() {
  // 假设这是你的表格数据
  const tableData = [
    { id: 1, content: '第一行内容' },
    { id: 2, content: '第二行内容' }
  ];

  return (
    <table>
      <tbody>
        {tableData.map(item => (
          <tr key={item.id}>
            <td>{item.content}</td>
            {/* 直接在JSX中插入图标 */}
            <td>
              <FontAwesomeIcon icon={RiDeleteBin6Line} />
            </td>
          </tr>
        ))}
      </tbody>
    </table>
  );
}

内容的提问来源于stack exchange,提问作者grafeno30

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.17 06:04:56