我在试着做一个反应计算器。这已经基本完成了,但我有一个问题我不知道如何纠正:我不想让用户输入以多个"0“开头的表达式,而像"01”这样的表达式应该被替换为"1“。我考虑过使用字符串方法来限制它,但它没有任何动摇。编辑:我知道为什么我的解决方案不起作用(输入永远不会有超过一个零),但我不知道任何其他方法来解决它。
class Calculator extends Component {
constructor(props) {
super(props);
this.state = { value: "" };
this.handleClick = this.handleClick.bind(this);
}
handleClick(evt) {
const id = evt.target.id;
const result = evt.target.value;
if (id === "clear") {
this.setState({ value: 0 });
} else if (id === "equals") {
this.setState({ value: math.eval(this.state.value) });
} else {
result.toString().includes("00");
this.setState({ value: this.state.value + result.replace("00", "0") });
console.log(this.state.value);
}
}
render() {
return (
<div id="container">
<Display value={this.state.value} />
<Button onClick={this.handleClick} id="zero" value={"0"} />
<Button onClick={this.handleClick} id="one" value={"1"} />
<Button onClick={this.handleClick} id="two" value={"2"} />
<Button onClick={this.handleClick} id="three" value={"3"} />
<Button onClick={this.handleClick} id="four" value={"4"} />
<Button onClick={this.handleClick} id="five" value={"5"} />
<Button onClick={this.handleClick} id="six" value={"6"} />
<Button onClick={this.handleClick} id="seven" value={"7"} />
<Button onClick={this.handleClick} id="eight" value={"8"} />
<Button onClick={this.handleClick} id="nine" value={"9"} />
<Button onClick={this.handleClick} id="decimal" value={"."} />
<Button onClick={this.handleClick} id="equals" value={"="} />
<Button onClick={this.handleClick} id="clear" value={"clear"} />
<Button onClick={this.handleClick} id="add" value={"+"} />
<Button onClick={this.handleClick} id="subtract" value={"-"} />
<Button onClick={this.handleClick} id="multiply" value={"*"} />
<Button onClick={this.handleClick} id="divide" value={"/"} />
</div>
);
}
}
export default Calculator;
发布于 2018-10-21 23:36:21
您可以更改此行
this.setState({ value: this.state.value + result.replace("00", "0") });
到这个
let num = this.state.value + Number(result);
this.setState({ value: Number(num).toString()});
我想这会解决问题的。
https://stackoverflow.com/questions/52916881
复制相似问题