Skip to content

Commit 433bfc0

Browse files
committed
fix(Table): filter under control should work, close #1945
1 parent 9241978 commit 433bfc0

File tree

2 files changed

+14
-1
lines changed

2 files changed

+14
-1
lines changed

src/table/base/filter.jsx

+13-1
Original file line numberDiff line numberDiff line change
@@ -34,6 +34,7 @@ class Filter extends React.Component {
3434
this.state = {
3535
visible: filterConfig.visible || false,
3636
selectedKeys: filterConfig.selectedKeys || [],
37+
selectedKeysChangedByInner: true,
3738
};
3839
this._selectedKeys = [...this.state.selectedKeys];
3940
}
@@ -47,7 +48,14 @@ class Filter extends React.Component {
4748
const dataIndex = nextProps.dataIndex || this.props.dataIndex;
4849
const filterParams = nextProps.filterParams || {};
4950
const filterConfig = filterParams[dataIndex] || {};
50-
const selectedKeys = filterConfig.selectedKeys || [];
51+
let selectedKeys;
52+
if (prevState.selectedKeysChangedByInner) {
53+
selectedKeys = prevState.selectedKeys || [];
54+
state.selectedKeysChangedByInner = false;
55+
} else {
56+
selectedKeys = filterConfig.selectedKeys || [];
57+
}
58+
5159
state.selectedKeys = selectedKeys;
5260
}
5361

@@ -79,6 +87,7 @@ class Filter extends React.Component {
7987
const selectedKeys = [...this._selectedKeys];
8088

8189
this.setState({
90+
selectedKeysChangedByInner: true,
8291
selectedKeys,
8392
});
8493
}
@@ -87,6 +96,7 @@ class Filter extends React.Component {
8796
onFilterSelect = selectedKeys => {
8897
this.setState({
8998
visible: true,
99+
selectedKeysChangedByInner: true,
90100
selectedKeys,
91101
});
92102
};
@@ -103,6 +113,7 @@ class Filter extends React.Component {
103113
this._selectedKeys = [...selectedKeys];
104114
this.setState({
105115
visible: false,
116+
selectedKeysChangedByInner: true,
106117
});
107118
// 兼容之前的格式
108119
this.props.onFilter(filterParams);
@@ -120,6 +131,7 @@ class Filter extends React.Component {
120131
this.setState({
121132
selectedKeys: [],
122133
visible: false,
134+
selectedKeysChangedByInner: true,
123135
});
124136
// 兼容之前的格式
125137
this.props.onFilter(filterParams);

test/table/index-spec.js

+1
Original file line numberDiff line numberDiff line change
@@ -585,6 +585,7 @@ describe('Table', () => {
585585
},
586586
},
587587
});
588+
wrapper.find('.next-icon-filter').simulate('click');
588589
wrapper
589590
.find('.next-btn')
590591
.at(0)

0 commit comments

Comments
 (0)