Aquí está mi lógica para manejar las pulsaciones de botones.

hbp(e) {

let iVal = e.target.value;
switch(iVal) {
  case "=" :
        this.setState({calculate : true});
    break; 
  case "AC" :
    this.setState({opList : [],calculate : false});
    console.log(this.state.opList)
    break;
  default:
    let list = this.state.opList.concat(iVal);
            this.setState({opList : list,calculate : false});
            
}

A veces agrega el valor que quiero y, a veces, agrega indefinido.

Mi bolígrafo para este problema: https://codepen.io/furkanozdemir2003/pen/QWKYMBP?editors=1111

-1
Furkan Özdemir 20 ene. 2021 a las 12:42

1 respuesta

La mejor respuesta

Pude replicar esto haciendo clic en el botón del punto decimal. El problema se debe a que e.target se establece en <i> dentro del botón si el puntero está sobre el elemento. Por ejemplo, aquí hay un console.log:

enter image description here

Dado que el elemento <i> no tiene un atributo value, e.target.value siempre será undefined Lo mismo ocurre con los botones del operador, como dividir, multiplicar, agregar, restar, etc.)

Puede eliminar el uso de FontAwesome y, por lo tanto, los subelementos, o actualizar su captador para hacer referencia a currentTarget en su lugar:

let iVal = e.currentTarget.value;
0
BenM 20 ene. 2021 a las 09:56