我如何在 javascript(Reactjs) 中编写此条件

Posted

技术标签:

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

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

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

【问题讨论】:

问题需要改进。尝试只询问您面临的具体问题,而不是仅仅链接您的代码并询问它为什么不起作用。 【参考方案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));   

【讨论】:

那不行!:( github.com/corasphinx/Calculator.git 我 fork 你的 repo 并在我这边测试。 这里是 App.js docs.google.com/document/d/… 对不起,你是对的。【参考方案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));
  

【讨论】:

以上是关于我如何在 javascript(Reactjs) 中编写此条件的主要内容,如果未能解决你的问题,请参考以下文章

如何在reactjs中访问悬停状态?

如何在 ReactJS 中处理多选表单

如何在reactjs / javascript中按值对对象数组进行分组

ReactJS/Javascript/Graphql/React-apollo:传递查询变量

如何在 ReactJs 中使用 DRACOLoader 和 GLTFLoader?

如何使用 Reactjs 显示 xml 数据