我正在使用React JS开发一个简单的计算器应用,大部分功能已按预期运行。然而,我希望当连续点击两个或更多包含运算符(例如“*”、“+”等)的按钮时,能够改变操作符参数。
以下是相关代码片段:
class Calculator extends React.Component {
constructor(props) {
super(props);
this.state = {
previous: "",
current: "",
operation: "",
};
}
// 清除方法...
clear = () => {...};
// 删除方法...
delete = () => {...};
// 添加数字方法...
appendNumber = (number) => {...};
// 选择运算符方法...
chooseOperation = (op) => {
const { previous, current, operation } = this.state;
// 如果当前值非空,则执行计算或更新状态
if (current !== "") {
if (previous !== "") {
this.compute();
}
// 尝试实现连续点击运算符时替换原有运算符的逻辑(未成功)
// ...
// 此处是原有的状态更新逻辑
this.setState((prevState) => ({
operation: op,
previous: prevState.current,
current: "",
}));
}
};
// 计算方法...
compute = () => {...};
}
我尝试过以下几种方法来解决连续点击运算符的问题:
- 在
chooseOperation
方法内部使用条件语句来更新运算符参数,但并未生效。
- 使用数组
some
方法检查当前运算符中是否包含某个运算符,并使用replace
方法替换旧运算符,但这同样未能达到预期效果。
- 获取当前运算符的最后一个字符,如果该字符属于运算符集合,则替换掉旧运算符的最后一个字符,其余情况下则按照原逻辑更新状态,但这种方法也未能解决问题。
- 我还在
compute
方法中的switch语句前尝试了一个条件判断来处理连续点击运算符的情况,但也未能成功。
至今为止,我尝试的方法都未能达到预期目标,而且我不希望额外添加任何参数,因为其他大多数功能都已经正常运作。