@@ -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,13 @@ 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
+ return parseInt ( value , 10 ) ;
100
+ }
101
+
92
102
setInputValue ( base , value ) {
93
103
const __value = value ;
94
104
base = this . input . current . checkValidity ( ) ? convert ( base ) : NaN ;
@@ -109,7 +119,8 @@ export default class Input extends PureComponent {
109
119
}
110
120
111
121
onEvent ( ) {
112
- const { value, valueAsNumber} = this . input . current ;
122
+ const { value} = this . input . current ;
123
+ const valueAsNumber = this . getValueAsNumber ( value ) ;
113
124
if ( this . props . type === 'number' ) {
114
125
this . setPropValue (
115
126
this . props . value ,
0 commit comments