@@ -28,10 +28,12 @@ export default class Input extends PureComponent {
28
28
this . onKeyPress = this . onKeyPress . bind ( this ) ;
29
29
this . setInputValue = this . setInputValue . bind ( this ) ;
30
30
this . setPropValue = this . setPropValue . bind ( this ) ;
31
+ this . getValueAsNumber = this . getValueAsNumber . bind ( this ) ;
31
32
}
32
33
33
34
componentWillReceiveProps ( nextProps ) {
34
- const { value, valueAsNumber} = this . input . current ;
35
+ const { value} = this . input . current ;
36
+ const valueAsNumber = this . getValueAsNumber ( value ) ;
35
37
this . setInputValue (
36
38
isNil ( valueAsNumber ) ? value : valueAsNumber ,
37
39
nextProps . value
@@ -42,7 +44,8 @@ export default class Input extends PureComponent {
42
44
}
43
45
44
46
componentDidMount ( ) {
45
- const { value, valueAsNumber} = this . input . current ;
47
+ const { value} = this . input . current ;
48
+ const valueAsNumber = this . getValueAsNumber ( value ) ;
46
49
this . setInputValue (
47
50
isNil ( valueAsNumber ) ? value : valueAsNumber ,
48
51
this . props . value
@@ -89,6 +92,15 @@ export default class Input extends PureComponent {
89
92
) ;
90
93
}
91
94
95
+ getValueAsNumber ( value ) {
96
+ if ( parseInt ( value , 10 ) != parseFloat ( value ) ) {
97
+ return parseFloat ( value ) ;
98
+ }
99
+ else {
100
+ return parseInt ( value ) ;
101
+ }
102
+ }
103
+
92
104
setInputValue ( base , value ) {
93
105
const __value = value ;
94
106
base = this . input . current . checkValidity ( ) ? convert ( base ) : NaN ;
@@ -109,7 +121,8 @@ export default class Input extends PureComponent {
109
121
}
110
122
111
123
onEvent ( ) {
112
- const { value, valueAsNumber} = this . input . current ;
124
+ const { value} = this . input . current ;
125
+ const valueAsNumber = this . getValueAsNumber ( value ) ;
113
126
if ( this . props . type === 'number' ) {
114
127
this . setPropValue (
115
128
this . props . value ,
0 commit comments