【问题标题】:how I can write this condition in javascript(Reactjs)我如何在 javascript(Reactjs) 中编写此条件
【发布时间】:2022-01-15 16:23:34
【问题描述】:

我最近用 react 开始了一个计算器项目。 我创建了这个项目,它运行良好,但我只想为其添加一个新功能。 我想当我点击一个操作符号(如“+”、“-”、“*”、“/”),如果我再点击一次并且之前存在的操作相同(例如 1234+) 当我单击“+”或“-”时,我的代码不会将其添加到代码中,而是将其替换为之前的操作,并对“/”和“*”

我还附上了存储库链接,以便您自己查看我的计算器源代码。 the repository of project source code

【问题讨论】:

  • 问题需要改进。尝试只询问您面临的具体问题,而不是仅仅链接您的代码并询问它为什么不起作用。

标签: javascript reactjs web ecmascript-6 calculator


【解决方案1】:

请更新handleClick函数如下:

    const handleClick = (e) => {
        if(result.length && result.charAt(result.length-1) != e.target.name || result.length == 0)
        setResult(result.concat(e.target.name));   
}

【讨论】:

【解决方案2】:

在您的handleClick 函数中,只需检查当前字符是否为运算符符号(例如:'+'、'-'、'*'、'/')并且当前result 字符串中的最后一个字符是也是一个运算符符号。如果它们都是运算符符号,只需执行以下操作:

const handleClick = (e) => {
  if (result.length > 0 && (result[result.length - 1] === '+' || result[result.length - 1] === '-' || result[result.length - 1] === '*' || result[result.length - 1] === '/') && (e.target.name === '+' || e.target.name === '-' || e.target.name === '*' || e.target.name === '/')) {
    const newRes = result.slice(0, result.length - 1).concat(e.target.name);
    setResult(newRes);
  } else {
    setResult(result.concat(e.target.name));
  }
}

【讨论】:

    猜你喜欢
    • 2022-09-29
    • 1970-01-01
    • 2020-10-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-09-18
    • 2021-06-29
    • 1970-01-01
    相关资源
    最近更新 更多