基本思路

获取input元素中输入的用户名和密码,使用axios发送请求进行匹配,如果用户名和密码正确,则进行路由跳转

使用的库

都使用了目前的最新版本

"react": "^18.1.0",
"react-router-dom": "^6.3.0",
"axios": "^0.27.2"

1.获取input元素中输入的用户名和密码

定义Logout组件
在Logout组件使用useRef() hooks即可

import React, {useRef} from 'react';
const Logout = ()=>{const usernameRef = useRef();const passwordRef = useRef();const handleSubmit = (e)=>{e.preventDefault();const username = usernameRef.current.value;const password = passwordRef.current.value;}return (<div><h1>登录界面</h1><form><input ref={usernameRef} type='text' placeholder='username'/><br/><input ref={passwordRef} type='password' placeholder='password'/><br/><button onClick={handleSubmit} type='submit'>登录</button></form></div>);
}export default Logout;

2.使用axios发送请求进行匹配

对handleSubmit()修改如下

const handleSubmit = (e)=>{e.preventDefault();const username = usernameRef.current.value;const password = passwordRef.current.value;axios({method:'GET',url:`https://localhost/user/${username}`}).then(response => {if(response.data.password === password) {console.log('登录成功')}})}

3.进行路由跳转

  • 首先简单定义一个login组件
const Login = ()=>{return (<div><h1>欢迎登录XX管理系统</h1></div>)
}export default Login;
  • 修改index.jsx
import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import reportWebVitals from './reportWebVitals';
import {BrowserRouter} from "react-router-dom";const root = ReactDOM.createRoot(document.getElementById('root')
);
root.render(<React.StrictMode><BrowserRouter><App/></BrowserRouter></React.StrictMode>
);
  • 修改App.jsx
import React from 'react';
import {Routes, Route} from "react-router-dom";
import Logout from "./Logout";
import Login from "./Login";function App() {return (<Routes><Route path='/' element={<Logout/>}/><Route path='/login' element= {<Login/>}/></Routes>)
}export default App;
  • 最后修改Logout组件
    这里修改了用户名和密码为固定值
    使用useState()获取当前是否登录
    使用useNavigate()进行路由跳转
    使用useEffect()获取登录状态的变化
import React, {useEffect, useRef, useState} from 'react';
import { useNavigate } from 'react-router-dom';const Logout = ()=>{const [login,setLogin] = useState(false);const navigate = useNavigate();const usernameRef = useRef();const passwordRef = useRef();const handleSubmit = (e)=>{e.preventDefault();const username = usernameRef.current.value;const password = passwordRef.current.value;// axios({//     method:'GET',//     url:`https://localhost/user/${username}`// }).then(response => {//     if(response.data.password === password) {//         console.log('登录成功')//     }// })if(username==='admin'&&password==='123456') {console.log('登录成功');setLogin(true);} else {console.log('用户名或密码错误');}}useEffect(()=>{if(login) {console.log('登录成功,正在跳转界面')navigate('/login')} else {console.log('等待用户登录')}})return (<div><h1>登录界面</h1><form><input ref={usernameRef} type='text' placeholder='username'/><br/><input ref={passwordRef} type='password' placeholder='password'/><br/><button onClick={handleSubmit} type='submit'>登录</button></form></div>);
}export default Logout;

【React】React中设计一个简单的登录操作模板相关推荐

  1. 实现一个简单的登录页面

    实现一个简单的登录页面 设计了一个登录页面,感觉还挺不错的 实现效果 设计的还是挺好看的吧 分析需要的功能 一个登录页面一个注册页面 翻转效果 输入后的正则判断,给用户提示信息 翻转要清空页面的全部信 ...

  2. 小白教程——Windows下用PHP写一个简单的登录注册页面(二)

    哈喽,看到这里希望小伙伴们都把wampserver环境安装好了,如果还没有安装或创建数据表就移步去看我上一篇文章吧.OK~接下我们将进入代码实现部分,首先我们需要一个文本编辑器,可以是电脑自带的not ...

  3. mvc登录实例 mysql_spring mvc + mybatis + mysql 调整的一个简单的登录例子

    spring mvc + mybatis + mysql 整合的一个简单的登录例子 今天用spring跟mybatis整合写了一个简单的登录例子,第一次整合,给自己做个笔记,可能注释写的有点少,做的不 ...

  4. 写一个简单的登录页面!!!(html)

    写一个简单的登录页面!!! 大家好,我是伍柒. 今天我又双叒叕发现了一个好东西. 那就是用html做一个登录页面 那,该如何做呢? 首先 现在html里的body里写 一个头部header标签(双标签 ...

  5. 一个简单的登录注册网页的实现

    一个简单的登录注册网页的实现 通过 标签让标签内的内容居中显示,再通过标签中的method属性来设置请求方式为post(一般涉及密码等机密数据都用post请求):再通过action来设置请求地址.这其 ...

  6. 一对一直播源码,实现一个简单的登录界面

    一对一直播源码,实现一个简单的登录界面 1.html <!DOCTYPE html> <html lang="en"> <head><me ...

  7. PyQt5制作一个简单的登录界面

    最近在学习GUI设计,分享做的一些小项目. 这篇文我们讲一下如何制作一个简单的登录界面. 目录 一.效果图 二.简述制作过程: 三.源码及材料: 1.源码: 2.图片素材: 一.效果图 如下: 二.简 ...

  8. 利用cookie和jsp写一个简单的登录判断的网页,并获取上次的登录的时间。

    要求:因为只是简单制作,没必要连数据库,直接用确定值去判断.然后就是第一次登录的时候需要获取到登录的时间,然后在下次登录的时候将上次获取到的时间输出. 思路:首先第一个,第一次登录的jsp(姑且当做注 ...

  9. 一个简单的SHELL脚本模板

    一个简单的SHELL脚本模板,适用于Java项目的启动,停止,重启. 如果在windows上编辑,请使用Notepad++ 设置编码格式为UTF-8无BOM编码,脚本的文档格式为UNIX格式,否则会因 ...

最新文章

  1. 机器学习面试:这25个实用又有深度的问题
  2. 通过学习生物范式,寻找解决AI识别噪音的新方法
  3. 收集国内著名互联网公司前端/UED部门的blog,方便学习交流
  4. .net集合类型的接口说明与使用
  5. Mysql 5.7 的‘虚拟列’是做什么?
  6. [LeetCode] Remove Element 分析
  7. cube云原生机器学习平台-架构(二)
  8. 编译原理教程_5 自底向上分析
  9. Sql分页存储过程(支持多表分页存储)
  10. 基于yolov5与Deep Sort的流量统计与轨迹跟踪
  11. 苹果蓝牙连接不上是什么原因_为什么无线鼠标几乎都不用蓝牙连接呢?延迟、回报率是硬伤...
  12. 数据分析---统计学基础知识
  13. 解决Tomcat 乱码问题简洁版
  14. kprobe与perf probe使用简单记录
  15. 数据链路层-点对点通信方式
  16. 后端返回一个下载Excel表格的url,要PC浏览器打开下载,前端代码设计
  17. K8sPod对象的生命周期
  18. C++中的字符串的定义方式
  19. Windows 怎么查看是否已经真正激活
  20. 电子线路实验I综合设计:数字钟

热门文章

  1. 导入Excel表格数据(一)
  2. android 备份 wifi密码,请教怎么备份已连接过得wifi密码 android机
  3. 高通增强现实SDK开发实例,COCOACHINA首发。qualcomm ar sdk
  4. msysgit + TortoiseGit安装
  5. 信息技术计算机老师继续教育培训心得,信息技术课教师继续教育心得体会
  6. 台式计算机喇叭啸叫声,电脑K歌麦和音箱产生啸叫干扰的原因详解
  7. ORACLE 19c rman恢复 ORA-00283 ORA-01610 错误处理
  8. ebs workflow builder下载路径
  9. sql常见语法_常见SQL语法错误以及解决方法
  10. linux centos 命令行 安装 teamviewers ___yyw合并版