Skip to content

Commit 7bc7f84

Browse files
authored
chore: warning for mix useage (#696)
1 parent 8368933 commit 7bc7f84

File tree

3 files changed

+25
-18
lines changed

3 files changed

+25
-18
lines changed

src/Table.tsx

Lines changed: 14 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -26,6 +26,7 @@
2626

2727
import * as React from 'react';
2828
import isVisible from 'rc-util/lib/Dom/isVisible';
29+
import pickAttrs from 'rc-util/lib/pickAttrs';
2930
import { isStyleSupport } from 'rc-util/lib/Dom/styleChecker';
3031
import classNames from 'classnames';
3132
import shallowEqual from 'shallowequal';
@@ -64,7 +65,7 @@ import { getPathValue, mergeObject, validateValue, getColumnsKey } from './utils
6465
import ResizeContext from './context/ResizeContext';
6566
import useStickyOffsets from './hooks/useStickyOffsets';
6667
import ColGroup from './ColGroup';
67-
import { getExpandableProps, getDataAndAriaProps } from './utils/legacyUtil';
68+
import { getExpandableProps } from './utils/legacyUtil';
6869
import Panel from './Panel';
6970
import Footer, { FooterComponents } from './Footer';
7071
import { findAllChildrenKeys, renderExpandIcon } from './utils/expandUtil';
@@ -338,6 +339,17 @@ function Table<RecordType extends DefaultRecordType>(props: TableProps<RecordTyp
338339
[getRowKey, mergedExpandedKeys, mergedData, onExpand, onExpandedRowsChange],
339340
);
340341

342+
// Warning if use `expandedRowRender` and nest children in the same time
343+
if (
344+
process.env.NODE_ENV !== 'production' &&
345+
expandedRowRender &&
346+
mergedData.some((record: RecordType) => {
347+
return Array.isArray(record?.[mergedChildrenColumnName]);
348+
})
349+
) {
350+
warning(false, '`expandedRowRender` should not use with nested Table');
351+
}
352+
341353
// ====================== Column ======================
342354
const [componentWidth, setComponentWidth] = React.useState(0);
343355

@@ -725,7 +737,7 @@ function Table<RecordType extends DefaultRecordType>(props: TableProps<RecordTyp
725737
);
726738
}
727739

728-
const ariaProps = getDataAndAriaProps(props);
740+
const ariaProps = pickAttrs(props, { aria: true, data: true });
729741

730742
let fullTable = (
731743
<div

src/utils/legacyUtil.ts

Lines changed: 1 addition & 16 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import warning from 'rc-util/lib/warning';
2-
import { ExpandableConfig, LegacyExpandableProps } from '../interface';
2+
import type { ExpandableConfig, LegacyExpandableProps } from '../interface';
33

44
export const INTERNAL_COL_DEFINE = 'RC_TABLE_INTERNAL_COL_DEFINE';
55

@@ -38,18 +38,3 @@ export function getExpandableProps<RecordType>(
3838

3939
return legacyExpandableConfig;
4040
}
41-
42-
/**
43-
* Returns only data- and aria- key/value pairs
44-
* @param {object} props
45-
*/
46-
export function getDataAndAriaProps(props: object) {
47-
/* eslint-disable no-param-reassign */
48-
return Object.keys(props).reduce((memo, key) => {
49-
if (key.substr(0, 5) === 'data-' || key.substr(0, 5) === 'aria-') {
50-
memo[key] = props[key];
51-
}
52-
return memo;
53-
}, {});
54-
/* eslint-enable */
55-
}

tests/ExpandRow.spec.js

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -499,4 +499,14 @@ describe('Table.Expand', () => {
499499
);
500500
expect(wrapper.find('.rc-table-expanded-row').length).toBe(0);
501501
});
502+
503+
it('warning for use `expandedRowRender` and nested table in the same time', () => {
504+
resetWarned();
505+
const errorSpy = jest.spyOn(console, 'error').mockImplementation(() => {});
506+
mount(createTable({ expandedRowRender, data: [{ children: [] }] }));
507+
expect(errorSpy).toHaveBeenCalledWith(
508+
'Warning: `expandedRowRender` should not use with nested Table',
509+
);
510+
errorSpy.mockRestore();
511+
});
502512
});

0 commit comments

Comments
 (0)