Recientemente comencé un proyecto de calculadora con reaccionar. Creo el proyecto y funciona bien, pero solo quiero agregarle una nueva característica. quiero que cuando haga clic en un símbolo de operación (como "+", "-", "*", "/") si hago clic una vez más y la operación anterior sea la misma (por ejemplo, 1234+) cuando hago clic en "+" o "-" mi código no lo agrega al código y lo reemplaza con la operación anterior y también lo hago con "/" y "*"
También adjunto el enlace del repositorio para que puedas ver el código fuente de mi calculadora por ti mismo. el repositorio del código fuente del proyecto
Actualice la función handleClick como se muestra a continuación:
const handleClick = (e) => { if(result.length && result.charAt(result.length-1) != e.target.name || result.length == 0) setResult(result.concat(e.target.name)); }En su función handleClick , simplemente verifique si el carácter actual es un símbolo de operador (por ejemplo: '+', '-', '*', '/') y el último carácter en la cadena de result actual también es un símbolo de operador. Si ambos son símbolos de operador, simplemente haga lo siguiente:
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)); } }