瀏覽代碼

fix(table): `rowClassName` not worked with `striped`

修复rowClassName属性无法和striped同时生效的问题

fixed: #1167
无木 3 年之前
父節點
當前提交
044e2e4e86
共有 3 個文件被更改,包括 9 次插入5 次删除
  1. 1 0
      CHANGELOG.zh_CN.md
  2. 6 3
      src/components/Table/src/hooks/useTableStyle.ts
  3. 2 2
      src/components/Table/src/types/table.ts

+ 1 - 0
CHANGELOG.zh_CN.md

@@ -4,6 +4,7 @@
 - **BasicTable**
   - 单元格编辑新增提交回调,将根据回调函数返回的结果来决定是否将数据提交到表格
   - 行编辑添加校验方法,允许只校验而不提交值,以便异步保存数据成功后才提交倒表格
+  - 修复`rowClassName`属性无法和`striped`同时使用的问题
 
 ### 🐛 Bug Fixes
 

+ 6 - 3
src/components/Table/src/hooks/useTableStyle.ts

@@ -6,11 +6,14 @@ import { isFunction } from '/@/utils/is';
 export function useTableStyle(propsRef: ComputedRef<BasicTableProps>, prefixCls: string) {
   function getRowClassName(record: TableCustomRecord, index: number) {
     const { striped, rowClassName } = unref(propsRef);
-    if (!striped) return;
+    const classNames: string[] = [];
+    if (striped) {
+      classNames.push((index || 0) % 2 === 1 ? `${prefixCls}-row__striped` : '');
+    }
     if (rowClassName && isFunction(rowClassName)) {
-      return rowClassName(record);
+      classNames.push(rowClassName(record, index));
     }
-    return (index || 0) % 2 === 1 ? `${prefixCls}-row__striped` : '';
+    return classNames.filter((cls) => !!cls).join(' ');
   }
 
   return { getRowClassName };

+ 2 - 2
src/components/Table/src/types/table.ts

@@ -25,7 +25,7 @@ export interface TableRowSelection<T = any> extends ITableRowSelection {
 
   /**
    * Callback executed when select/deselect one row
-   * @type FunctionT
+   * @type Function
    */
   onSelect?: (record: T, selected: boolean, selectedRows: Object[], nativeEvent: Event) => any;
 
@@ -291,7 +291,7 @@ export interface BasicTableProps<T = any> {
    * Row's className
    * @type Function
    */
-  rowClassName?: (record: TableCustomRecord<T>) => string;
+  rowClassName?: (record: TableCustomRecord<T>, index: number) => string;
 
   /**
    * Row selection config