当前位置:首页 > 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 开发基础 React Native 是一个用于构建跨平台移动应用的框架,允许开发者使用 JavaScript 和 React 编写代码,同时生成原生 iOS 和 Androi…

react中monent如何获取日期

react中monent如何获取日期

使用 Moment.js 获取当前日期 在 React 中通过 Moment.js 获取当前日期,可以直接调用 moment() 函数。它会返回包含当前日期和时间的 Moment 对象。 impor…

如何生成react代码

如何生成react代码

使用 Create React App 生成项目 安装 Node.js 后,通过命令行工具运行以下命令创建新项目: npx create-react-app my-app cd my-app npm…

react如何读

react如何读

React 的发音 React 的发音为 /riˈækt/(音标),读作“瑞-艾克特”。其中: “Re” 发音类似英文单词 “read” 的开头部分。 “act” 发音与英文单词 “act” 一…

如何提高react

如何提高react

优化性能 使用React.memo对组件进行记忆化处理,避免不必要的重新渲染。对于类组件,可以使用PureComponent来达到类似效果。 利用useMemo缓存计算结果,避免重复计算。对于函数或…

react如何检测

react如何检测

检测 React 应用的方法 使用 PropTypes 进行类型检查 PropTypes 是 React 内置的类型检查工具,用于验证组件的 props 是否符合预期。在开发环境中,PropTypes…