我的第一个 React 应用程序:使用 codepen 的计算器

My first react app: a calculator using codepen

我目前有 2 个主要问题。

第一个我不明白为什么但是我不能使用<button>。我不得不将其切换为 <input type="button"/>.

第二个是我的函数 addDecimal 没有按预期工作。

addDecimal(){
  this.setState( prevState => {
    if (prevState.input.includes(".")) { 
      return prevState;
    } else { 
      console.log(prevState);
      return {
        input: prevState.input.concat("."),
        //result: prevState.result,
        //operation: prevState.operation,
      };
    }     
  });
}

当我触发函数时,检查失败并仍然添加一个点。

这是codepen link https://codepen.io/Dali213/pen/QWbwbOb

默认情况下,<button> 元素属于 type="submit"。所以在这种情况下,您可以使用 <button type="button"> 来达到与 <input type="button"> 相同的效果。 <button> 元素更容易应用 CSS。

带有 type="submit" 的按钮在发布到 <form> 时也很有用,而带有 type="button" 的按钮对于非表单帖子很有用。


关于你的第二个问题,我没有看到你描述的问题。

当我单击调用 addDecimal 函数的按钮时,第一次 运行 正确添加 . 并注销 console.log(prevState); 然后任何调用该函数后的时间此代码成功 运行: if (prevState.input.includes(".")) {return prevState}

如果 state.input 已经包含小数,您可以通过提早退出来简化此函数:

addDecimal(){
  if (this.state.input.includes(".")) {
    return;
  }

  this.setState( prevState => {
    return {
      input: prevState.input.concat("."),
    }; 
  });
}