当我点击它时如何显示元素?

how to display elements when I click on it?

当我点击任何按钮时,显示的是 1,如果我再次点击,我得到的是错误信息,提示推送不是函数。按钮数组中的索引 1 似乎已被推入 state.num 然后 state.num 改变了它,s 类型从数组到数字所以我有 3 个问题:

1-为什么选择 (1) 而不是按钮数组中的另一个元素??我无法理解

2-为什么 num 的类型发生了变化?它不是应该将 (1) 作为数组元素推送吗?看起来它用数字 1 交换了 num 数组。.这是怎么发生的使用推送方法??

3-当我点击按钮数组时如何显示每个元素?我做错了什么?

这是我的代码

 class App extends React.Component {
  constructor(props){
    super(props);
    this.state={
      num:[],
    }
    this.handleclick=this.handleclick.bind(this);
  }
  handleclick (ele){
    this.setState({num:this.state.num.push(ele)})
  };
  render() { 
    const buttons = ["÷", 1, 2, 3, "*", 4, 5, 6,"+", 7, 8, 9, ".", 0, "-"];
    return (
      <div className="calculation-grid">
        <div className="output">
          <div className="previous-operand"></div>
          <div className="current-operand">{console.log(this.state.num)}</div>
        </div>
        <button className="span-two">AC</button>
        <button>DEL</button>
       {buttons.map((ele)=><button  onClick={()=>this.handleclick(ele)} key={ele}>{ele}</button>)}
        <button className="span-two">=</button>
</div>
    );
  }
}
 
export default App;

问题是 Array.prototype.push 没有 return 更新的数组(它是数组的长度)。您可以使用传播运算符来推送如下值。

handleclick(ele) {
  this.setState({ num: [...this.state.num, ele] });
}

或(使用回调函数)

handleclick(ele) {
  this.setState((prevState) => ({
    ...prevState,
    num: [...prevState.num, ele]
  }));
}