From b96e4757ead921420ac472d2a024b0461798a2c0 Mon Sep 17 00:00:00 2001 From: just-boris Date: Sat, 14 Nov 2015 02:37:05 +0300 Subject: [PATCH] provide slider value onAfterChange trigger --- src/Slider.jsx | 33 ++++++++------------------------- 1 file changed, 8 insertions(+), 25 deletions(-) diff --git a/src/Slider.jsx b/src/Slider.jsx index ff69e4c..c90da5d 100644 --- a/src/Slider.jsx +++ b/src/Slider.jsx @@ -117,19 +117,7 @@ class Slider extends React.Component { this.setState({[state.handle]: value}); } - if (props.range) { - // `this.state` will not be updated immediately after `this.setState`. - // So, create a similar object. - // const data = Object.assign({}, state, {[state.handle]: value}); - const data = { - upperBound: state.upperBound, - lowerBound: state.lowerBound, - }; - data[state.handle] = value; - this.triggerEvents('onChange', [data.lowerBound, data.upperBound]); - } else { - this.triggerEvents('onChange', value); - } + this.triggerEvents('onChange', this.getValue()); } onTouchStart(e) { @@ -181,17 +169,12 @@ class Slider extends React.Component { [valueNeedChanging]: value, }); - if (this.props.range) { - // const data = Object.assign({}, state, {[valueNeedChanging]: value}); - const data = { - upperBound: state.upperBound, - lowerBound: state.lowerBound, - }; - data[valueNeedChanging] = value; - this.triggerEvents('onChange', [data.lowerBound, data.upperBound]); - } else { - this.triggerEvents('onChange', value); - } + this.triggerEvents('onChange', this.getValue()); + } + + getValue() { + const {handle, upperBound, lowerBound} = this.state; + return this.props.range ? [lowerBound, upperBound] : this.state[handle]; } getIndex(value) { @@ -318,7 +301,7 @@ class Slider extends React.Component { end(type) { this.removeEventons(type); - this.triggerEvents('onAfterChange'); + this.triggerEvents('onAfterChange', this.getValue()); this.setState({handle: null}); }