当前位置:首页 > React

react实现计算器

2026-01-27 14:24:35React

React 实现计算器的步骤

创建 React 项目
使用 create-react-appVite 初始化项目:

npx create-react-app calculator
# 或
npm create vite@latest calculator --template react

设计组件结构
计算器通常包含以下部分:

  • 显示区域(Display)
  • 按钮区域(ButtonPad)
  • 逻辑处理(Calculator)

实现显示组件
创建一个显示当前输入和结果的组件:

function Display({ value }) {
  return <div className="display">{value || "0"}</div>;
}

实现按钮组件
创建可复用的按钮组件:

function Button({ onClick, label }) {
  return (
    <button onClick={onClick} className="button">
      {label}
    </button>
  );
}

核心逻辑实现
Calculator 组件中处理计算逻辑:

function Calculator() {
  const [display, setDisplay] = useState("0");
  const [storedValue, setStoredValue] = useState(null);
  const [operation, setOperation] = useState(null);

  const handleNumberInput = (num) => {
    setDisplay(display === "0" ? num : display + num);
  };

  const handleOperation = (op) => {
    setStoredValue(parseFloat(display));
    setOperation(op);
    setDisplay("0");
  };

  const calculateResult = () => {
    const currentValue = parseFloat(display);
    let result;
    switch (operation) {
      case "+":
        result = storedValue + currentValue;
        break;
      case "-":
        result = storedValue - currentValue;
        break;
      case "*":
        result = storedValue * currentValue;
        break;
      case "/":
        result = storedValue / currentValue;
        break;
      default:
        return;
    }
    setDisplay(result.toString());
    setStoredValue(null);
    setOperation(null);
  };

  const clearAll = () => {
    setDisplay("0");
    setStoredValue(null);
    setOperation(null);
  };
}

完整组件渲染
将各个部分组合起来:

return (
  <div className="calculator">
    <Display value={display} />
    <div className="button-pad">
      <Button onClick={() => handleNumberInput("7")} label="7" />
      <Button onClick={() => handleNumberInput("8")} label="8" />
      <Button onClick={() => handleNumberInput("9")} label="9" />
      <Button onClick={() => handleOperation("/")} label="/" />

      <Button onClick={() => handleNumberInput("4")} label="4" />
      <Button onClick={() => handleNumberInput("5")} label="5" />
      <Button onClick={() => handleNumberInput("6")} label="6" />
      <Button onClick={() => handleOperation("*")} label="*" />

      <Button onClick={() => handleNumberInput("1")} label="1" />
      <Button onClick={() => handleNumberInput("2")} label="2" />
      <Button onClick={() => handleNumberInput("3")} label="3" />
      <Button onClick={() => handleOperation("-")} label="-" />

      <Button onClick={() => handleNumberInput("0")} label="0" />
      <Button onClick={() => setDisplay(display + ".")} label="." />
      <Button onClick={calculateResult} label="=" />
      <Button onClick={() => handleOperation("+")} label="+" />

      <Button onClick={clearAll} label="C" />
    </div>
  </div>
);

添加样式
创建 CSS 文件增强视觉效果:

.calculator {
  width: 240px;
  margin: 0 auto;
  border: 1px solid #ccc;
  border-radius: 5px;
  padding: 10px;
}

.display {
  background: #f8f8f8;
  padding: 10px;
  margin-bottom: 10px;
  text-align: right;
  font-size: 20px;
}

.button-pad {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-gap: 5px;
}

.button {
  padding: 10px;
  font-size: 18px;
  border: none;
  background: #eee;
  cursor: pointer;
}

.button:hover {
  background: #ddd;
}

功能扩展建议

react实现计算器

  1. 添加键盘支持
  2. 实现连续运算功能
  3. 添加历史记录功能
  4. 支持科学计算功能
  5. 实现主题切换功能

这个实现提供了基本计算器功能,包括加减乘除和清零操作。可以根据需求进一步扩展功能和完善用户体验。

标签: 计算器react
分享给朋友:

相关文章

react native如何启动

react native如何启动

如何启动 React Native 项目 安装 Node.js 和 npm 确保已安装 Node.js(建议版本 16 或更高)和 npm(Node.js 自带)。可通过以下命令检查版本: node…

react如何浮动

react如何浮动

使用 CSS 实现浮动 在 React 中实现浮动效果可以通过 CSS 的 float 属性完成。在组件的样式文件或内联样式中直接设置 float: left 或 float: right。 /…

react 如何跳转

react 如何跳转

使用 React Router 进行页面跳转 React 应用中通常使用 react-router-dom 库实现页面跳转。以下是几种常见的跳转方式: 安装依赖 npm install react…

react如何注销

react如何注销

React 组件的注销方法 在 React 中,组件的注销通常指的是在组件卸载时执行清理操作,例如取消订阅、清除定时器或释放资源。以下是几种常见的方法: 使用 useEffect 钩子的清理函数…

如何调试react

如何调试react

调试 React 应用的方法 使用 React Developer Tools 安装浏览器扩展(Chrome/Firefox),通过组件树查看组件状态、props 和 hooks。支持实时编辑 pro…

react如何重写alert

react如何重写alert

重写 React 中的 alert 方法 在 React 中,直接使用原生 alert 会破坏用户体验,通常需要自定义弹窗组件替代。以下是实现方法: 使用自定义弹窗组件 创建可复用的弹窗组件,替代原…