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

React.js中使用react-table时如何为<tr>元素添加自定义类名

解决方案

你可以通过以下两种方式实现指定行自定义类名的需求:

方式1:直接在渲染行标签时拼接类名(灵活适配临时需求)

直接在tr标签渲染阶段,根据行数据判断条件,合并原有类名和自定义类名即可,修改你代码中tbody里的行渲染逻辑:

{rows.map((row, i) => {
    prepareRow(row);
    // 这里替换成你自己的判断逻辑,比如根据行原始数据的某个字段判断
    const customRowClass = row.original.needHighlight ? 'highlight-row' : '';
    // 获取react-table默认的行props,合并自定义类名
    const rowProps = row.getRowProps();
    return (
        <tr 
            {...rowProps}
            className={`${rowProps.className || ''} ${customRowClass}`.trim()}
        >
            {row.cells.map(cell => {
                return (
                    <td {...cell.getCellProps()}>
                        {cell.render('Cell')}
                    </td>
                );
            })}
        </tr>
    );
})}

方式2:在useTable配置中声明getRowProps(符合react-table设计规范,适合通用组件)

直接在useTable的配置项里添加getRowProps回调,react-table会自动应用你返回的类名,无需修改渲染逻辑,修改useTable的入参:

const {
    getTableProps,
    getTableBodyProps,
    headerGroups,
    rows,
    prepareRow,
    state: { expanded },
} = useTable(
    {
        className,
        colSpan,
        columns,
        data,
        // 新增这部分配置
        getRowProps: (row) => {
            // 替换成你自己的判断逻辑
            if (row.original.needDisabled) {
                return {
                    className: 'disabled-row'
                }
            }
            return {}
        }
    },
    useExpanded
);

两种方式都可以正常实现需求,如果你是做通用组件,更推荐第二种方式,你可以把自定义类名的判断逻辑通过props暴露给父组件调用,灵活度更高。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.02 04:27:05