如何在react-data-table-component的DataTable无数据时保留表头?
解决DataTable无数据时仍显示表头且不使用noDataComponent的问题
下面提供几种可行方案,不用依赖noDataComponent就能实现表头始终显示:
强制开启表头显示属性
不少DataTable组件自带控制表头显示的开关属性,直接设置为true即可强制渲染表头,哪怕数据为空。比如:<DataTable columns={columns} data={data} actions={actions} progressPending={loading} showHeader={true} // 核心属性,不同组件可能叫displayHeader/persistHeader,按需调整 />用CSS强制覆盖隐藏逻辑
如果组件没提供对应属性,直接通过CSS强制表头区域显示:/* 替换成你所用DataTable的表头实际类名 */ .data-table__header { display: table-header-group !important; }要是组件在空数据时会给容器加特定类(比如
.no-data),可以针对性调整:.data-table.no-data .data-table__header { display: table-header-group !important; }给空数据设置占位行
当data为空时,传入一行空结构的占位数据,让组件认为有数据存在,自然会保留表头:// 空对象占位,若columns有指定字段,也可以设对应空值,比如{ id: '', name: '' } const tableData = data.length ? data : [{}]; <DataTable columns={columns} data={tableData} actions={actions} progressPending={loading} />这种方式可以配合columns的
render方法,让空行显示空白内容,避免多余干扰。
之前你用空的noDataComponent没用,是因为很多组件在数据为空时,会同时触发表头隐藏的逻辑,空组件只是去掉了无数据提示,但表头的隐藏规则没被打破。
内容的提问来源于stack exchange,提问作者Lee McCready
相关产品推荐
相关产品推荐

