React Table行选择功能异常:仅表头生成复选框数据行无复选框
故障根因
你代码的核心问题出在数据行单元格的渲染逻辑上:
- 你在遍历
row.cells渲染时,错误提取了cell.render('Cell').props.value作为单元格内容。而你通过useRowSelect注入的选择列的Cell配置返回的是<IndeterminateCheckbox />React组件对象,不存在props.value属性,因此选择列的单元格直接被渲染为空,这就是数据行看不到复选框的直接原因。 - 另外你没有给
<td>绑定cell.getCellProps(),会丢失react-table内置的事件、属性配置,可能影响后续行选择的交互逻辑。
修复方案
直接替换tbody中row.cells.map的逻辑即可,修改后的代码如下:
{ row.cells.map(cell => { // 直接调用cell.render('Cell')渲染完整单元格内容,同时绑定cell原生属性 return <td {...cell.getCellProps()}>{cell.render('Cell')}</td> }) }
修改后重新运行,数据行的复选框就可以正常渲染,行选择、全选功能也能正常交互。
可选优化
你当前的useEffect只在组件初始化时触发一次,如果你后续需要支持数据刷新,可以调整依赖逻辑;另外如果后端返回的数据量小于3页,默认pageIndex:2会导致初始渲染为空,可根据实际业务调整默认页码为0。
内容的提问来源于stack exchange,提问作者gwydion93
相关产品推荐
相关产品推荐

