Skip to content

Commit 90726da

Browse files
committed
Fix Select deadlock
1 parent ce99ecf commit 90726da

File tree

3 files changed

+25
-17
lines changed

3 files changed

+25
-17
lines changed

package-lock.json

Lines changed: 7 additions & 7 deletions
Some generated files are not rendered by default. Learn more about customizing how changed files appear on GitHub.

package.json

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
{
22
"name": "element-react",
3-
"version": "1.0.15",
3+
"version": "1.0.16",
44
"description": "Element UI for React",
55
"private": false,
66
"main": "dist/npm/es5/index.js",
@@ -48,7 +48,7 @@
4848
"enzyme": "^2.9.1",
4949
"eslint": "^3.19.0",
5050
"eslint-config-airbnb": "^15.0.1",
51-
"eslint-plugin-flowtype": "^2.34.0",
51+
"eslint-plugin-flowtype": "^2.34.1",
5252
"eslint-plugin-import": "^2.6.0",
5353
"eslint-plugin-jsx-a11y": "^5.1.0",
5454
"eslint-plugin-react": "^7.0.1",
@@ -67,7 +67,7 @@
6767
"react-test-renderer": "^15.5.4",
6868
"regenerator-runtime": "^0.10.5",
6969
"sass-loader": "^6.0.5",
70-
"sinon": "^2.3.4",
70+
"sinon": "^2.3.6",
7171
"style-loader": "^0.18.2",
7272
"typescript": "^2.4.1",
7373
"url-loader": "^0.5.8",

src/select/Select.jsx

Lines changed: 15 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -194,8 +194,7 @@ class Select extends Component {
194194
return value.indexOf(curr.props.value) > -1 ? prev.concat(curr) : prev;
195195
}, [])
196196
}, () => {
197-
this.resetInputHeight();
198-
this.onSelectedChange(this.state.selected);
197+
this.onSelectedChange(this.state.selected, false);
199198
});
200199
} else {
201200
const selected = options.filter(option => {
@@ -287,7 +286,16 @@ class Select extends Component {
287286

288287
onValueChange(val: mixed) {
289288
const { multiple } = this.props;
290-
let { options, valueChangeBySelected, selectedInit, selected, selectedLabel, currentPlaceholder, cachedPlaceHolder } = this.state;
289+
290+
let {
291+
options,
292+
valueChangeBySelected,
293+
selectedInit,
294+
selected,
295+
selectedLabel,
296+
currentPlaceholder,
297+
cachedPlaceHolder
298+
} = this.state;
291299

292300
if (valueChangeBySelected) {
293301
return this.setState({
@@ -303,7 +311,7 @@ class Select extends Component {
303311
currentPlaceholder = cachedPlaceHolder;
304312

305313
val.forEach(item => {
306-
let option = this.options.filter(option => option.props.value === item)[0];
314+
let option = options.filter(option => option.props.value === item)[0];
307315
if (option) {
308316
this.addOptionToValue(option);
309317
}
@@ -326,7 +334,7 @@ class Select extends Component {
326334
});
327335
}
328336

329-
onSelectedChange(val: any) {
337+
onSelectedChange(val: any, bubble: boolean = true) {
330338
const { multiple, filterable, onChange } = this.props;
331339
let { query, hoverIndex, inputLength, selectedInit, currentPlaceholder, cachedPlaceHolder, valueChangeBySelected } = this.state;
332340

@@ -343,7 +351,7 @@ class Select extends Component {
343351

344352
valueChangeBySelected = true;
345353

346-
onChange && onChange(val.map(item => item.props.value), val);
354+
bubble && onChange && onChange(val.map(item => item.props.value), val);
347355

348356
// this.dispatch('form-item', 'el.form.change', val);
349357

@@ -367,7 +375,7 @@ class Select extends Component {
367375
});
368376
}
369377

370-
onChange && onChange(val.props.value, val);
378+
bubble && onChange && onChange(val.props.value, val);
371379
}
372380
}
373381

0 commit comments

Comments
 (0)