首页 > 其他分享 >用 React 构建一个简单的计算器:前端开发实战演练

用 React 构建一个简单的计算器:前端开发实战演练

时间:2024-09-05 17:13:41浏览次数:8  
标签:Calculator Button Display React 计算器 组件 前端开发

在前端开发中,React 是一个非常流行的 JaScript 框架,广泛用于构建用户界面。今天我们将通过一个实战项目,展示如何用 React 构建一个简单的计算器,这不仅可以帮助你巩固对 React 的基础知识,还能让你对实际开发有更深的理解。
一、项目搭建
你需要确保本地环境已经安装了 Node.js 和 npm 或者 yarn。我们可以通过 Create React App 快速初始化一个 React 项目:
npx create-react-app react-calculator
cd react-calculator
npm start

一旦项目启动成功,你应该可以在浏览器中看到 React 的默认页面。我们就开始实现计算器功能。
二、组件结构设计
在 React 中,界面通常是由多个组件组合而成的。为了让代码更加清晰,我们可以将计算器拆分为几个主要组件:显示屏组件(Display)、按钮组件(Button)和整个计算器的容器组件(Calculator)。

Display 组件:用于显示输入和计算结果。
Button 组件:负责渲染每一个按钮,用户通过点击这些按钮来输入操作符和数字。
Calculator 组件:负责管理整个计算器的逻辑,包括状态管理和事件处理。

三、编写 Display 和 Button 组件
我们来实现 Display 组件,它将接收当前输入值或计算结果作为 props,并显示出来:
function Display({ value }) {
return (
<div className="display">
{value}
</div>
);
}

接下来是 Button 组件,它同样接收 props,包括按钮的显示内容以及点击时触发的事件:
function Button({ label, onClick }) {
return (
<button onClick={() => onClick(label)}>
{label}
</button>
);
}

四、实现 Calculator 组件
Calculator 组件是计算器的核心部分,负责处理用户的输入并进行计算。我们需要在该组件中定义一个 state 来管理当前的输入值和计算结果。为此,我们可以使用 React 的 useState 钩子。
import React, { useState } from 'react';
import Display from './Display';
import Button from './Button';

function Calculator() {
const [input, setInput] = useState('');

const handleButtonClick = (value) => {
if (value === '=') {
try {
setInput(eval(input)); // eval 用于计算表达式,但需要注意安全性
} catch {
setInput('Error');
}
} else if (value === 'C') {
setInput('');
} else {
setInput(input + value);
}
};

const buttons = ['7', '8', '9', '/', '4', '5', '6', '*', '1', '2', '3', '-', '0', '.', '=', '+', 'C'];

return (
<div className="calculator">
<Display value={input} />
<div className="buttons">
{buttons.map((label) => (
<Button key={label} label={label} onClick={handleButtonClick} />
))}
</div>
</div>
);
}

export default Calculator;

五、样式和优化
目前,我们的计算器已经能够基本实现加减乘除和清零的功能。可以根据需求对界面进行一些美化处理,使用 CSS 让按钮和显示屏更加美观整齐。在项目的实际开发中,使用 eval 处理计算逻辑是较为简便的方法,但存在一定的安全风险,建议在生产环境中使用更安全的数学表达式解析库,比如 math.js。
六、总结
通过这个简单的项目演练,我们用 React 实现了一个基础的计算器应用,主要包括组件的拆分与组合、状态管理以及事件处理。这是 React 开发中的基础操作,虽然项目不复杂,但涉及的知识点涵盖了前端开发的核心。如果你能掌握这个实战项目,相信对日后的前端开发将大有裨益。
文章转载自:https://www.96tuji.cn/625.html

标签:Calculator,Button,Display,React,计算器,组件,前端开发
From: https://www.cnblogs.com/52hmz/p/18398896

相关文章

  • 【前端面试】事件监听机制&React 的事件系统实现
    目的React实现了自己的事件系统,主要是为了解决以下几个问题:跨浏览器兼容性:不同的浏览器在处理DOM事件时有不同的实现,React的事件系统抽象了这些差异,提供了一致的API给开发者使用。性能优化:React可以对事件进行池化(Pooling),这意味着事件对象可以在事件处理过程......
  • 软件测试学习笔记丨Pytest+Allure测试计算器
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/31954项目要求3.1项目简介计算器是近代人发明的可以进行数字运算的机器。计算器通过对加法、减法、乘法、除法等功能的运算,将正确的结果展示在屏幕上。可帮助人们更方便的实现数字运算。一般情况下计算器除显示计算结果......
  • react中使用echarts关系图
     一,工作需求,展示几类数据关系,可缩放大小,可拖拽位置,在节点之间的连线上展示相关日期,每个节点展示本身信息,并且要求每个关系节点能点击。实现情况如图所示:二,实现过程中遇到的问题: 关系图完美呈现,但关系节点点击后,整个关系图会杂乱无章的浮动,导致不知道点击了哪个关系节点。 ......
  • 前端开发学习——CSS定位
    一、定位的基本介绍1、网页常见的布局方式1.标准流块级元素独占一行——垂直布局行内元素/行内块元素一行显示多个——水平布局2.浮动可以让原本垂直布局的块级元素变成水平布局3.定位可以让元素自由的摆放在网页的任意位置一般用于盒子之间的层叠情况 2、定位的常见......
  • 软件测试学习笔记丨Pytest+Allure测试计算器
    本文转自测试人社区,原文链接:https://ceshiren.com/t/topic/31954二、项目要求2.1项目简介计算器是一个经典的编程场景,可以获取两个数据的计算结果。2.1.1知识点Pytest测试框架基本用法2.1.2受众初级测试工程师2.1.3作业内容使用Pytest编写自动化测试用例对相加函数进行测试......
  • Vue前端开发 转 React 指南
    JSX先介绍React唯一的一个语法糖:JSX。理解JSX语法并不困难,简单记住一句话,遇到{}符号内部解析为JS代码,遇到成对的<>符号内部解析为HTML代码。当你写下这个React组件时:importReactfrom'react';functionMyComponent(props){return<div>{props.hello}<......
  • React18+TypeScript4+Vue3:‌入门到实战,‌灵活技术选型指南
    React18+TypeScript4+Vue3:‌入门到实战,‌灵活技术选型指南在当今的前端开发领域,‌React、‌TypeScript和Vue是三大热门技术,‌它们各自拥有独特的优势和广泛的应用场景。‌掌握这些技术,‌不仅能够提升你的开发效率,‌还能帮助你在不同项目中做出更加合适的技术选型。‌本文将带......
  • React 18 系统精讲:‌前端教程与最新特性源码级剖析
    React18系统精讲:‌前端教程与最新特性源码级剖析引言React18带来了许多激动人心的新特性和改进,‌旨在提高应用的性能和用户体验。‌本教程将深入探讨React18的核心特性,‌包括并发特性、‌新的API、‌以及源码层面的解析,‌帮助前端开发者更好地理解和应用这些新技术。‌......
  • React18+TS+NestJS+GraphQL+AntD+TypeOrm+Mysql全栈开发在线教育平台
    ‌标题‌:‌构建在线教育平台:‌React18+TypeScript+NestJS+GraphQL+AntDesign+TypeORM+MySQL全栈技术栈解析‌引言‌:‌在当今数字化时代,‌在线教育平台的需求日益增长。‌为了构建一个高效、‌可扩展且用户友好的在线教育平台,‌选择合适的技术栈至关重要。‌本文......
  • react中的弹幕效果怎么实现
    就像这样下面有完整代码一、引入的模块和组件引入React的核心库以及useEffect和useState这两个用于处理副作用和管理状态的ReactHook。引入rc-bullets库中。这个库可用于创建弹幕效果二、组件内部状态管理//弹幕屏幕const[screen,setScreen]=useState(null)......