چگونه می توانیم در react یک ماشین حساب پیاده سازی کنیم؟
- فرشته حقیقی 4 سال قبل سوال کرد
- آخرین ویرایش 4 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید
برای اینکار به دو تابع نیاز داریم.یکی برای گرفتن محتویات دکمه ای که کاربر کلیک می کند و دیگری برای نمایش آن در اسکرین ماشین حساب خود.
کامپوننت اصلی بصورت زیر می شود:
import React, { Component } from 'react';
import './App.css';
import ResultComponent from './components/ResultComponent';
import KeyPadComponent from "./components/KeyPadComponent";
class App extends Component {
constructor(){
super();
this.state = {
result: ""
}
}
onClick = button => {
if(button === "="){
this.calculate()
}
else if(button === "C"){
this.reset()
}
else if(button === "CE"){
this.backspace()
}
else {
this.setState({
result: this.state.result + button
})
}
};
calculate = () => {
var checkResult = ''
if(this.state.result.includes('--')){
checkResult = this.state.result.replace('--','+')
}
else {
checkResult = this.state.result
}
try {
this.setState({
// eslint-disable-next-line
result: (eval(checkResult) || "" ) + ""
})
} catch (e) {
this.setState({
result: "error"
})
}
};
reset = () => {
this.setState({
result: ""
})
};
backspace = () => {
this.setState({
result: this.state.result.slice(0, -1)
})
};
render() {
return (
<div>
<div className="calculator-body">
<h1>Simple Calculator</h1>
<ResultComponent result={this.state.result}/>
<KeyPadComponent onClick={this.onClick}/>
</div>
</div>
);
}
}
export default App;
سپس تابع گرفتن ورودی از کاربر زمانیکه کاربر دکمه ای را کلیک می کند بصورت زیر انجام می شود:
import React, {Component} from 'react';
class KeyPadComponent extends Component {
render() {
return (
<div className="button">
<button name="(" onClick={e => this.props.onClick(e.target.name)}>(</button>
<button name="CE" onClick={e => this.props.onClick(e.target.name)}>CE</button>
<button name=")" onClick={e => this.props.onClick(e.target.name)}>)</button>
<button name="C" onClick={e => this.props.onClick(e.target.name)}>C</button><br/>
<button name="1" onClick={e => this.props.onClick(e.target.name)}>1</button>
<button name="2" onClick={e => this.props.onClick(e.target.name)}>2</button>
<button name="3" onClick={e => this.props.onClick(e.target.name)}>3</button>
<button name="+" onClick={e => this.props.onClick(e.target.name)}>+</button><br/>
<button name="4" onClick={e => this.props.onClick(e.target.name)}>4</button>
<button name="5" onClick={e => this.props.onClick(e.target.name)}>5</button>
<button name="6" onClick={e => this.props.onClick(e.target.name)}>6</button>
<button name="-" onClick={e => this.props.onClick(e.target.name)}>-</button><br/>
<button name="7" onClick={e => this.props.onClick(e.target.name)}>7</button>
<button name="8" onClick={e => this.props.onClick(e.target.name)}>8</button>
<button name="9" onClick={e => this.props.onClick(e.target.name)}>9</button>
<button name="*" onClick={e => this.props.onClick(e.target.name)}>x</button><br/>
<button name="." onClick={e => this.props.onClick(e.target.name)}>.</button>
<button name="0" onClick={e => this.props.onClick(e.target.name)}>0</button>
<button name="=" onClick={e => this.props.onClick(e.target.name)}>=</button>
<button name="/" onClick={e => this.props.onClick(e.target.name)}>รท</button><br/>
</div>
);
}
}
export default KeyPadComponent;
تابع نمایش نیز بصورت زیر می شود:
import React, {Component} from 'react';
class ResultComponent extends Component {
render() {
let {result} = this.props;
return (
<div className="result">
<p>{result}</p>
</div>
)
;
}
}
export default ResultComponent;
app.css نیز بصورت زیر می توانیم تنظیم کنیم:
.result {
height: 60px;
background-color: #bbb;
width: 100%;
}
.result p {
font-size: 40px;
margin: 5px;
}
.calculator-body {
max-width: 400px;
margin: auto;
}
.button {
display: block;
background-color: #bbb;
}
button {
width: 25%;
height: 60px;
font-size: 30px;
}
- فرشته حقیقی 4 سال قبل پاسخ داد
- آخرین ویرایش 4 سال قبل
- شما باید برای ارسال دیدگاه وارد شوید