Skip to content

Commit fc42df5

Browse files
committed
fix: Table expandedRowKeys is undefined throws error
close ant-design/ant-design#21502
1 parent 9c01d23 commit fc42df5

File tree

4 files changed

+37
-3
lines changed

4 files changed

+37
-3
lines changed

src/ExpandableRow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -156,6 +156,6 @@ class ExpandableRow<ValueType> extends React.Component<ExpandableRowProps<ValueT
156156
}
157157
}
158158

159-
export default connect(({ expandedRowKeys }, { rowKey }) => ({
159+
export default connect(({ expandedRowKeys = [] }, { rowKey }) => ({
160160
expanded: expandedRowKeys.includes(rowKey),
161161
}))(ExpandableRow);

src/ExpandableTable.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -225,7 +225,7 @@ class ExpandableTable<ValueType> extends React.Component<ExpandableTableProps<Va
225225
{
226226
key: 'extra-row',
227227
render: () => {
228-
const { expandedRowKeys } = this.store.getState();
228+
const { expandedRowKeys = [] } = this.store.getState();
229229
const expanded = expandedRowKeys.includes(parentKey);
230230
return {
231231
props: {

src/TableRow.tsx

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -320,7 +320,7 @@ function getRowHeight(state, props) {
320320
polyfill(TableRow);
321321

322322
export default connect((state: TableStoreState, props: TableRowProps<DefaultValueType>) => {
323-
const { currentHoverKey, expandedRowKeys } = state;
323+
const { currentHoverKey, expandedRowKeys = [] } = state;
324324
const { rowKey, ancestorKeys } = props;
325325
const visible = ancestorKeys.length === 0 || ancestorKeys.every(k => expandedRowKeys.includes(k));
326326

tests/Table.expandRow.spec.js

Lines changed: 34 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -249,4 +249,38 @@ describe('Table.expand', () => {
249249

250250
expect(wrapper.find('.should-display').length).toBeTruthy();
251251
});
252+
253+
// https://github.com/ant-design/ant-design/issues/21502
254+
it('expandedRowKeys.includes should not throws error', () => {
255+
class Demo extends React.Component {
256+
state = {
257+
data: [],
258+
};
259+
260+
componentDidMount() {
261+
this.setState({
262+
data: [
263+
{
264+
id: 1,
265+
},
266+
],
267+
});
268+
}
269+
270+
render() {
271+
return (
272+
<Table
273+
expandedRowKeys={undefined}
274+
expandedRowRender={() => <p>opened</p>}
275+
columns={[{ title: 'id', dataIndex: 'id', key: 'id' }]}
276+
data={this.state.data}
277+
/>
278+
);
279+
}
280+
}
281+
282+
expect(() => {
283+
mount(<Demo />);
284+
}).not.toThrow();
285+
});
252286
});

0 commit comments

Comments
 (0)