用React实现一个登录界面

使用React来创建一个简单的登录表单。以下是一个基本的React登录界面示例:

1. 设置React项目

如果你还没有一个React项目,你可以使用Create React App来创建一个。按照之前的步骤安装Create React App,然后创建一个新项目。

2. 创建登录组件

在你的React项目中,创建一个新的组件文件,比如Login.js,并编写以下代码:

import React, { useState } from 'react';
import '../Styles/Login.css'; // 你可以创建一个CSS文件来美化你的登录表单

const Login = () => {
  const [email, setEmail] = useState('');
  const [password, setPassword] = useState('');
  const [error, setError] = useState('');

  const handleSubmit = (e) => {
    e.preventDefault();
    // 在这里添加你的登录逻辑,比如调用后端API
    // 暂时我们只打印输入的邮箱和密码
    console.log('Email:', email);
    console.log('Password:', password);

    // 假设验证失败,设置一个错误消息
    setError('Invalid credentials'); // 这只是为了演示,你应该根据实际的验证结果来设置错误消息

    // 清除表单(可选)
    setEmail('');
    setPassword('');
  };

  return (
    <div className="login-container">
      <h2>Login</h2>
      <form onSubmit={handleSubmit}>
        <div>
          <label>Email:</label>
          <input
            type="email"
            value={email}
            onChange={(e) => setEmail(e.target.value)}
            required
          />
        </div>
        <div>
          <label>Password:</label>
          <input
            type="password"
            value={password}
            onChange={(e) => setPassword(e.target.value)}
            required
          />
        </div>
        {error && <div className="error">{error}</div>}
        <button type="submit">Login</button>
      </form>
    </div>
  );
};

export default Login;

3. 添加样式

Login.css文件中,添加一些基本的样式来美化你的登录表单:

.login-container {
    max-width: 400px;
    margin: 50px auto; /* 增加顶部和底部的边距以提升居中效果 */
    padding: 30px; /* 增加内边距以使内容更加宽松 */
    border: 1px solid #ccc;
    border-radius: 15px; /* 增加圆角半径以使边框更加柔和 */
    box-shadow: 0 0 20px rgba(0, 0, 0, 0.15); /* 增加阴影的模糊半径以使阴影更加自然 */
    background-color: #f9f9f9; /* 添加背景颜色以区分界面 */
}

.login-container h2 {
    text-align: center;
    margin-bottom: 30px; /* 增加与表单元素的距离 */
    color: #333; /* 设置标题颜色 */
    font-family: Arial, sans-serif; /* 设置字体 */
}

.login-container div {
    margin-bottom: 20px; /* 适当调整间距 */
}

.login-container label {
    display: block;
    margin-bottom: 10px;
    color: #555; /* 设置标签颜色 */
}

.login-container input {
    width: 100%;
    padding: 10px;
    box-sizing: border-box;
    border: 1px solid #ccc;
    border-radius: 5px;
    transition: border-color 0.3s; /* 添加过渡效果 */
}

.login-container input:focus {
    border-color: #007bff; /* 聚焦时改变边框颜色以提升用户体验 */
}

.login-container button {
    width: 100%;
    padding: 12px;
    background-color: #28a745;
    color: white;
    border: none;
    border-radius: 5px;
    cursor: pointer;
    font-size: 16px; /* 增大按钮字体 */
    transition: background-color 0.3s; /* 添加过渡效果 */
}

.login-container button:hover {
    background-color: #218838;
}

.error {
    color: red;
    text-align: center;
    margin-top: 20px; /* 适当调整间距 */
    font-size: 14px; /* 设置错误提示的字体大小 */
}


4. 使用登录组件

现在,你需要在你的应用中渲染这个登录组件。通常,你会在App.js中做这件事:

import React from 'react';
import Login from './Pages/Login'; // 确保路径正确
import './App.css'; // 你可以在这里添加全局样式

function App() {
  return (
    <div className="App">
      <Login />
    </div>
  );
}

export default App;

5. 运行你的应用

确保你的开发服务器正在运行(使用npm start),然后在浏览器中打开http://localhost:3000来查看你的登录界面。
在这里插入图片描述

注意

  • 这个示例中的登录逻辑只是打印出输入的邮箱和密码,并没有实际的验证或后端交互。
  • 在实际的应用中,你应该使用HTTPS来保护用户的敏感信息。
  • 你应该实现后端API来处理登录请求,验证用户凭据,并返回适当的响应。
  • 你可能还需要实现注册、密码重置等功能。
  • 考虑到安全性,不要在前端存储敏感信息,比如密码(即使是以加密的形式)。始终在服务器端处理敏感操作。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/971747.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

Python爬虫实战:股票分时数据抓取与存储 (1)

在金融数据分析中&#xff0c;股票分时数据是投资者和分析师的重要资源。它能够帮助我们了解股票在交易日内的价格波动情况&#xff0c;从而为交易决策提供依据。然而&#xff0c;获取这些数据往往需要借助专业的金融数据平台&#xff0c;其成本较高。幸运的是&#xff0c;通过…

通过BingAPI爬取Bing半个月内壁纸

通过BingAPI爬取Bing半个月内壁纸 一、前言二、爬虫代码三、代码说明 一、前言 爬取Bing搜索网站首页壁纸的方式主要有两种&#xff0c;第一种为间接爬取&#xff0c;即并不直接对Bing网站发起请求&#xff0c;而是对那些收集汇总了Bing壁纸的网站发起请求&#xff0c;爬取图片…

matlab汽车动力学半车垂向振动模型

1、内容简介 matlab141-半车垂向振动模型 可以交流、咨询、答疑 2、内容说明 略 3、仿真分析 略 4、参考论文 略

在Ubuntu24.04上安装Stable-Diffusion1.10.1版本

之前曾介绍过在Ubuntu22.04上安装Stable-Diffusion&#xff1a; 在Ubuntu22.04上部署Stable Diffusion_ubuntu stable dif-CSDN博客 这个安装我们使用conda python虚拟机。这次我们介绍的是在Ubuntu24.04安装Stable-Diffusion的最新版本V1.10.1&#xff08;截止到今天最新版&…

功能测试与接口测试详解

&#x1f345; 点击文末小卡片&#xff0c;免费获取软件测试全套资料&#xff0c;资料在手&#xff0c;涨薪更快 本文主要分为两个部分&#xff1a; 第一部分&#xff1a;主要从问题出发&#xff0c;引入接口测试的相关内容并与前端测试进行简单对比&#xff0c;总结两者之前的…

IDEA集成DeepSeek

使用版本: IDEA 2024.3&#xff0c;Python3.11 通过CodeGPT插件安装&#xff1a; 1. 安装Python环境&#xff0c;安装完成后python --version验证是否成功 2. DeepSeek官网获取API Key 3. IDEA中安装CodeGPT插件 文件->设置->插件&#xff0c;搜"CodeGPT" …

DeepSeek笔记(二):DeepSeek局域网访问

如果有多台电脑&#xff0c;可以通过远程访问&#xff0c;实现在局域网环境下多台电脑共享使用DeepSeek模型。在本笔记中&#xff0c;首先介绍设置局域网多台电脑访问DeepSeek-R1模型。 一、启动Ollama局域网访问 1.配置环境变量 此处本人的操作系统是Windows11&#xff0c;…

计算机视觉-OpenCV图像处理

1.Matplotlib数据可视化&#xff08;绘制图像直方图、可视化矩阵&#xff09; # Matplotlib 数据可视化&#xff08;绘制图像直方图、可视化矩阵&#xff09; # 本节主要讲解如何使用 Matplotlib 绘制图像直方图和可视化矩阵。 # 1. 绘制图像直方图 # 2. 可视化矩阵# 1. 绘制图…

golangAPI调用deepseek

目录 1.deepseek官方API调用文档1.访问格式2.curl组装 2.go代码1. config 配置2.模型相关3.错误处理4.deepseekAPI接口实现5. 调用使用 3.响应实例 1.deepseek官方API调用文档 1.访问格式 现在我们来解析这个curl 2.curl组装 // 这是请求头要加的参数-H "Content-Type:…

闭源大语言模型的怎么增强:提示工程 检索增强生成 智能体

闭源大语言模型的怎么增强 提示工程 检索增强生成 智能体 核心原理 提示工程:通过设计和优化提示词,引导大语言模型进行上下文学习和分解式思考,激发模型自身的思维和推理能力,使模型更好地理解和生成文本,增强其泛用性和解决问题的能力。检索增强生成:结合检索的准确…

《计算机视觉》——角点检测和特征提取sift

角点检测 角点的定义&#xff1a; 从直观上理解&#xff0c;角点是图像中两条或多条边缘的交点&#xff0c;在图像中表现为局部区域内的灰度变化较为剧烈的点。在数学和计算机视觉中&#xff0c;角点可以被定义为在两个或多个方向上具有显著变化的点。比如在一幅建筑物的图像…

具身智能在智能巡检机器人中的应用——以开关柜带电操作机器人为例

随着机器人技术和人工智能的迅速发展&#xff0c;具身智能在各行业的应用日益广泛&#xff0c;尤其是在电力行业中的智能巡检领域。传统的电力巡检和维护工作通常需要人工操作&#xff0c;存在着高温、高压、强电磁场等危险环境&#xff0c;且效率较低。开关柜带电操作机器人作…

基于SpringBoot实现的大学社团平台系统实现功能八

一、前言介绍&#xff1a; 1.1 项目摘要 随着高校社团活动的日益丰富和多样化&#xff0c;学生对于社团管理和参与的需求也在不断增加。传统的社团管理方式往往存在效率低下、信息不透明等问题&#xff0c;无法满足现代学生对于便捷、高效社团管理的需求。因此&#xff0c;利…

Unity使用反射进行Protobuf(CS/SC)协议,json格式

protobuf生成的协议,有挺多协议的.利用反射生成dto进行伪协议的响应 和 发送请求 应用场景: 请求(CS)_后端先写完了(有proto接口了),前端还没搞完时(暂还没接入proto),后端可使用此请求,可自测 响应(SC)_可自行构建一个响应(有些特殊数据后端下发不了的),对数据进行测试 // 请…

使用synchronized解决高并发场景

synchronized能很好的解决高并发所带来的超卖等问题&#xff0c;但是synchronized也有属于它的缺陷&#xff0c;就是只适合单机模式&#xff0c;如果同时开启多个实例&#xff0c;那么还是会出现超卖的情况&#xff0c;下面就介绍一下synchronized使用方法&#xff0c;十分的简…

【Pytorch 库】自定义数据集相关的类

torch.utils.data.Dataset 类torch.utils.data.DataLoader 类自定义数据集示例1. 自定义 Dataset 类2. 在其他 .py 文件中引用和使用该自定义 Dataset torch_geometric.data.Dataset 类torch_geometric.data.Dataset VS torch.utils.data.Dataset 详细信息&#xff0c;参阅 tor…

Softing线上研讨会 | 自研还是购买——用于自动化产品的工业以太网

| 线上研讨会时间&#xff1a;2025年1月27日 16:00~16:30 / 23:00~23:30 基于以太网的通信在工业自动化网络中的重要性日益增加。设备制造商正面临着一大挑战——如何快速、有效且经济地将工业以太网协议集成到其产品中。其中的关键问题包括&#xff1a;是否只需集成单一的工…

Wireshark 输出 数据包列表本身的值

在 Wireshark 中&#xff0c;如果你想输出数据包列表本身的值&#xff08;例如&#xff0c;将数据包的摘要信息、时间戳、源地址、目的地址等导出为文本格式&#xff09;&#xff0c;可以使用 导出为纯文本文件 的功能。以下是详细步骤&#xff1a; 步骤 1&#xff1a;打开 Wir…

解压rar格式的软件有哪些?8种方法(Win/Mac/手机/网页端)

RAR 文件是一种常见的压缩文件格式&#xff0c;由尤金・罗谢尔&#xff08;Eugene Roshal&#xff09;开发&#xff0c;因其扩展名 “rar” 而得名。它通过特定算法将一个或多个文件、文件夹进行压缩&#xff0c;大幅减小存储空间&#xff0c;方便数据传输与备份。然而&#xf…

java实现不带哨兵节点的双向链表(二)

概述 todo 扩展&#xff1a;实现链表节点的删除&#xff08;根据索引删除节点、删除第一个元素&#xff09;、添加的元素为数组最后一个元素&#xff08;addLast&#xff09;等 实现上一篇博客中提到的 根据索引删除节点。删除第一个元素。添加的元素为数组最后一个元素。 根…