React小项目-在线计算器

news/2024/7/15 19:32:13 标签: react.js, 前端, 前端框架, javascript, 学习

CONTENTS

    • 1. 项目初始化
    • 2. 总体前端界面设计
    • 3. 计算器前端界面设计
    • 4. 计算器逻辑功能实现

本文介绍如何使用 React 制作一个小项目:在线计算器,即能够支持登录的部署在云服务器上的项目。该项目比较能体现出 React 的优势,需要多个组件之间进行交互。

1. 项目初始化

我们先创建项目 calculator_react

create-react-app calculator_react

项目的页面设置如下(在写网站之前一定要先设计好,从上往下写):

  • 根目录:/
  • 主页:/home
  • 计算器:/calculator
  • 登录:/login
  • 注册:/register
  • Not Found:/404

我们可以创建一个 App 组件,该组件包含一个 NavBar 和一个 Content 组件,然后 Content 组件中再包含 HomeCalculatorLoginRegisterNotFound

打开项目根目录,安装相应的库:

npm i bootstrap
npm i react-router-dom
npm i redux react-redux @reduxjs/toolkit

2. 总体前端界面设计

我们先用 Bootstrap 组件实现导航栏 NavBar

import React, {
    Component } from 'react';
import {
    Link } from 'react-router-dom'

class NavBar extends Component {
   
    state = {
     }
    // container-fluid布局会靠在左右两边,把fluid去掉就会稍微靠中间一点
    render() {
   
        return (
            <nav className="navbar navbar-expand-lg bg-body-tertiary">
                <div className="container">
                    <Link className="navbar-brand" to="/">AsanoSaki's Calculator</Link>
                    <button className="navbar-toggler" type="button" data-bs-toggle="collapse" data-bs-target="#navbarText" aria-controls="navbarText" aria-expanded="false" aria-label="Toggle navigation">
                        <span className="navbar-toggler-icon"></span>
                    </button>
                    <div className="collapse navbar-collapse" id="navbarText">
                        <ul className="navbar-nav me-auto mb-2 mb-lg-0">
                            <li className="nav-item">
                                <Link className="nav-link" to="/home">Home</Link>
                            </li>
                            <li className="nav-item">
                                <Link className="nav-link" to="/calculator">Calculator</Link>
                            </li>
                            <li className="nav-item">
                                <Link className="nav-link" to="/about">About</Link>
                            </li>
                        </ul>
                        <ul className="navbar-nav ms-auto mb-2 mb-lg-0">
                            <li className="nav-item">
                                <Link className="nav-link" to="/login">Login</Link>
                            </li>
                            <li className="nav-item" style={
   {
   paddingTop: '8px'}}>
                                |
                            </li>
                            <li className="nav-item">
                                <Link className="nav-link" to="/register">Register</Link>
                            </li>
                        </ul>
                    </div>
                </div>
            </nav>
        );
    }
}

export default NavBar;

然后我们先创建出每个页面的组件,以 Home 为例:

import React, {
    Component } from 'react';

class Home extends Component {
   
    state = {
     }
    render() {
   
        return (
            <h1>Home</h1>
        );
    }
}

export default Home;

现在我们需要在 App 中写一下路由:

import React, {
    Component } from 'react';
import {
    Route, Routes, Navigate } from 'react-router-dom'
import NavBar from './navbar';
import Home from './content/home';
import Calculator from './content/calculator';
import About from './content/about';
import Login from './content/login';
import Register from './content/register';
import NotFound from './content/notfound';

class App extends Component {
   
    state = {
     }
    render() {
   
        return (
            <React.Fragment>
                <NavBar />
                <div className='container'>
                    <Routes>
                        <Route path='/' element={
   <Home />}></Route>
                        <Route path='/home' element={
   <Home />}></Route>
                        <Route path='/calculator' element={
   <Calculator />}></Route>
                        <Route path='/about' element={
   <About />}></Route>
                        <Route path='/login' element={
   <Login />}></Route>
                        <Route path='/register' element={
   <Register />}></Route>
                        <Route path='/404' element={
   <NotFound />}></Route>
                        <Route path='*' element={
   <Navigate replace to='/404' />}></Route>
                    </Routes>
                </div>
                <h1>Hello App</h1>
            </React.Fragment>
        );
    }
}

export default App;

然后我们更新一下 index.js 文件:

import React from 'react';
import ReactDOM from 'react-dom/client';
import './index.css';
import 'bootstrap/dist/css/bootstrap.css';
import 'bootstrap/dist/js/bootstrap';
import {
    BrowserRouter } from 'react-router-dom';
import App from './components/app';

const root = ReactDOM.createRoot(document.getElementById('root'));
root.render(
  <BrowserRouter

http://www.niftyadmin.cn/n/5020414.html

相关文章

Docker 入门:如何打包、部署并运行你的应用

&#x1f337;&#x1f341; 博主猫头虎&#xff08;&#x1f405;&#x1f43e;&#xff09;带您 Go to New World✨&#x1f341; &#x1f405;&#x1f43e;猫头虎建议程序员必备技术栈一览表&#x1f4d6;&#xff1a; &#x1f6e0;️ 全栈技术 Full Stack: &#x1f4da…

centos 编译安装的php多版本 切换

centos 编译安装的php多版本 切换 wheris php php: /usr/bin/php /usr/lib64/php /etc/php.ini /etc/php.d /usr/local/php /usr/local/php7.4 /usr/share/php /usr/share/man/man1/php.1.gz/usr/bin/php: php可执行脚本&#xff0c;任何版本的php 通过软连接到这可以实现全局…

【LeetCode-中等题】209. 长度最小的子数组

文章目录 题目方法一&#xff1a;滑动窗口&#xff1a;方法二&#xff1a; 题目 方法一&#xff1a;滑动窗口&#xff1a; 参考图解动画&#xff1a;长度最小的子数组 class Solution { //方法一:滑动窗口public int minSubArrayLen(int target, int[] nums) {int n nums.l…

微信小程序 按钮颜色

<button type"primary">主要按钮样式类型</button> <button type"default">默认按钮样式类型</button> <button type"warn">警告按钮样式类型</button> <view>按钮plain是否镂空</view> <bu…

C++学习第二十二天----函数

1.函数的参数以及局部变量 程序清单7.4&#xff1b; 27f4614 Kite/C和C - Gitee.com 2.函数和数组 程序清单7.5&#xff1b;函数参数是数组 233e36e Kite/C和C - Gitee.com 在c中&#xff0c;当且仅当用于函数头或函数原型中&#xff0c;int *arr 和int arr[ ]的含义相同…

Linux学习笔记-Ubuntu系统下配置用户ssh只能访问git仓库

目录 一、基本信息1.1 系统信息1.2 git版本[^1]1.2.1 服务器端git版本1.2.2 客户端TortoiseGit版本1.2.3 客户端Git for windows版本 二、创建git用户和群组[^2]2.1 使用groupadd创建群组2.2 创建git用户2.2.1 使用useradd创建git用户2.2.2 配置新建的git用户ssh免密访问 2.3 创…

QT QMdiArea控件 使用详解

本文详细的介绍了QMdiArea控件的各种操作&#xff0c;例如&#xff1a;新建界面、源代码、添加界面、移除一个子窗口、设置活动子窗口、子窗口级联排列、子窗口平铺排列、关闭当前子窗口、关闭当前子窗口、返回当前子窗口、返回当前子窗口、返回子窗口列表、信号槽、单击信号、…

【jenkins】采坑合集

目录 ssh command报错&#xff1a; com.jcraft.jsch.JSchException ssh command报错&#xff1a; com.jcraft.jsch.JSchException 问题&#xff1a; jenkins由docker部署&#xff0c;pipeline脚本之前构建一直正常&#xff0c;某天构建突然报错&#xff0c;涉及多处&#xff1…