我如何在 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 / javascript中按值对对象数组进行分组
ReactJS/Javascript/Graphql/React-apollo:传递查询变量