1
- import React , { Component } from ' react' ;
2
- import ' ./Calculator.css' ;
1
+ import React , { Component } from " react" ;
2
+ import " ./Calculator.css" ;
3
3
4
- import Display from ' ../Display/Display' ;
5
- import Keypad from ' ../Keypad/Keypad' ;
6
- import ' ./Calculator.css' ;
4
+ import Display from " ../Display/Display" ;
5
+ import Keypad from " ../Keypad/Keypad" ;
6
+ import " ./Calculator.css" ;
7
7
8
8
class Calculator extends Component {
9
9
state = {
10
- displayValue : '0' ,
11
- numbers : [ '9' , '8' , '7' , '6' , '5' , '4' , '3' , '2' , '1' , '.' , '0' , 'ce' ] ,
12
- operators : [ '/' , 'x' , '-' , '+' ] ,
13
- selectedOperator : '' ,
14
- storedValue : '' ,
10
+ displayValue : "0" ,
11
+ numbers : [ "9" , "8" , "7" , "6" , "5" , "4" , "3" , "2" , "1" , "." , "0" , "ce" ] ,
12
+ operators : [ "/" , "x" , "-" , "+" ] ,
13
+ selectedOperator : "" ,
14
+ storedValue : ""
15
15
} ;
16
16
17
- componentWillMount = ( ) => {
18
- document . addEventListener ( ' keydown' , this . handleKeyPress ) ;
17
+ UNSAFE_componentWillMount = ( ) => {
18
+ document . addEventListener ( " keydown" , this . handleKeyPress ) ;
19
19
} ;
20
20
21
21
componentWillUnmount = ( ) => {
22
- document . removeEventListener ( ' keydown' , this . handleKeyPress ) ;
22
+ document . removeEventListener ( " keydown" , this . handleKeyPress ) ;
23
23
} ;
24
24
25
25
handleKeyPress = event => {
26
26
const { numbers, operators } = this . state ;
27
27
28
- if ( event . key === ' Backspace' ) this . updateDisplay ( event , 'ce' ) ;
29
- if ( event . key === ' Enter' || event . key === '=' ) this . callOperator ( event ) ;
28
+ if ( event . key === " Backspace" ) this . updateDisplay ( event , "ce" ) ;
29
+ if ( event . key === " Enter" || event . key === "=" ) this . callOperator ( event ) ;
30
30
31
31
numbers . forEach ( number => {
32
32
if ( event . key === number ) {
@@ -49,34 +49,39 @@ class Calculator extends Component {
49
49
storedValue = parseInt ( storedValue , 10 ) ;
50
50
51
51
switch ( selectedOperator ) {
52
- case '+' :
52
+ case "+" :
53
53
displayValue = storedValue + displayValue ;
54
54
break ;
55
- case '-' :
55
+ case "-" :
56
56
displayValue = storedValue - displayValue ;
57
57
break ;
58
- case 'x' :
58
+ case "x" :
59
59
displayValue = storedValue * displayValue ;
60
60
break ;
61
- case '/' :
61
+ case "/" :
62
62
displayValue = storedValue / displayValue ;
63
63
break ;
64
64
default :
65
- displayValue = '0' ;
65
+ displayValue = "0" ;
66
66
}
67
67
68
68
displayValue = displayValue . toString ( ) ;
69
- selectedOperator = '' ;
70
- if ( displayValue === 'NaN' || displayValue === 'Infinity' ) displayValue = '0' ;
71
-
72
- this . setState ( { displayValue, selectedOperator, storedValue : updateStoredValue } ) ;
69
+ selectedOperator = "" ;
70
+ if ( displayValue === "NaN" || displayValue === "Infinity" )
71
+ displayValue = "0" ;
72
+
73
+ this . setState ( {
74
+ displayValue,
75
+ selectedOperator,
76
+ storedValue : updateStoredValue
77
+ } ) ;
73
78
} ;
74
79
75
80
handleKeyPress = event => {
76
81
const { numbers, operators } = this . state ;
77
82
78
- if ( event . key === ' Backspace' ) this . updateDisplay ( 'ce' ) ;
79
- if ( event . key === ' Enter' || event . key === '=' ) this . callOperator ( ) ;
83
+ if ( event . key === " Backspace" ) this . updateDisplay ( "ce" ) ;
84
+ if ( event . key === " Enter" || event . key === "=" ) this . callOperator ( ) ;
80
85
81
86
numbers . forEach ( number => {
82
87
if ( event . key === number ) this . updateDisplay ( number ) ;
@@ -90,9 +95,9 @@ class Calculator extends Component {
90
95
setOperator = value => {
91
96
let { displayValue, selectedOperator, storedValue } = this . state ;
92
97
93
- if ( selectedOperator === '' ) {
98
+ if ( selectedOperator === "" ) {
94
99
storedValue = displayValue ;
95
- displayValue = '0' ;
100
+ displayValue = "0" ;
96
101
selectedOperator = value ;
97
102
} else {
98
103
selectedOperator = value ;
@@ -104,13 +109,13 @@ class Calculator extends Component {
104
109
updateDisplay = value => {
105
110
let { displayValue } = this . state ;
106
111
107
- if ( value === '.' && displayValue . includes ( '.' ) ) value = '' ;
112
+ if ( value === "." && displayValue . includes ( "." ) ) value = "" ;
108
113
109
- if ( value === 'ce' ) {
114
+ if ( value === "ce" ) {
110
115
displayValue = displayValue . substr ( 0 , displayValue . length - 1 ) ;
111
- if ( displayValue === '' ) displayValue = '0' ;
116
+ if ( displayValue === "" ) displayValue = "0" ;
112
117
} else {
113
- displayValue === '0' ? ( displayValue = value ) : ( displayValue += value ) ;
118
+ displayValue === "0" ? ( displayValue = value ) : ( displayValue += value ) ;
114
119
}
115
120
116
121
this . setState ( { displayValue } ) ;
0 commit comments