【React】React中设计一个简单的登录操作模板
基本思路
获取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中设计一个简单的登录操作模板相关推荐
- 实现一个简单的登录页面
实现一个简单的登录页面 设计了一个登录页面,感觉还挺不错的 实现效果 设计的还是挺好看的吧 分析需要的功能 一个登录页面一个注册页面 翻转效果 输入后的正则判断,给用户提示信息 翻转要清空页面的全部信 ...
- 小白教程——Windows下用PHP写一个简单的登录注册页面(二)
哈喽,看到这里希望小伙伴们都把wampserver环境安装好了,如果还没有安装或创建数据表就移步去看我上一篇文章吧.OK~接下我们将进入代码实现部分,首先我们需要一个文本编辑器,可以是电脑自带的not ...
- mvc登录实例 mysql_spring mvc + mybatis + mysql 调整的一个简单的登录例子
spring mvc + mybatis + mysql 整合的一个简单的登录例子 今天用spring跟mybatis整合写了一个简单的登录例子,第一次整合,给自己做个笔记,可能注释写的有点少,做的不 ...
- 写一个简单的登录页面!!!(html)
写一个简单的登录页面!!! 大家好,我是伍柒. 今天我又双叒叕发现了一个好东西. 那就是用html做一个登录页面 那,该如何做呢? 首先 现在html里的body里写 一个头部header标签(双标签 ...
- 一个简单的登录注册网页的实现
一个简单的登录注册网页的实现 通过 标签让标签内的内容居中显示,再通过标签中的method属性来设置请求方式为post(一般涉及密码等机密数据都用post请求):再通过action来设置请求地址.这其 ...
- 一对一直播源码,实现一个简单的登录界面
一对一直播源码,实现一个简单的登录界面 1.html <!DOCTYPE html> <html lang="en"> <head><me ...
- PyQt5制作一个简单的登录界面
最近在学习GUI设计,分享做的一些小项目. 这篇文我们讲一下如何制作一个简单的登录界面. 目录 一.效果图 二.简述制作过程: 三.源码及材料: 1.源码: 2.图片素材: 一.效果图 如下: 二.简 ...
- 利用cookie和jsp写一个简单的登录判断的网页,并获取上次的登录的时间。
要求:因为只是简单制作,没必要连数据库,直接用确定值去判断.然后就是第一次登录的时候需要获取到登录的时间,然后在下次登录的时候将上次获取到的时间输出. 思路:首先第一个,第一次登录的jsp(姑且当做注 ...
- 一个简单的SHELL脚本模板
一个简单的SHELL脚本模板,适用于Java项目的启动,停止,重启. 如果在windows上编辑,请使用Notepad++ 设置编码格式为UTF-8无BOM编码,脚本的文档格式为UNIX格式,否则会因 ...
最新文章
- 机器学习面试:这25个实用又有深度的问题
- 通过学习生物范式,寻找解决AI识别噪音的新方法
- 收集国内著名互联网公司前端/UED部门的blog,方便学习交流
- .net集合类型的接口说明与使用
- Mysql 5.7 的‘虚拟列’是做什么?
- [LeetCode] Remove Element 分析
- cube云原生机器学习平台-架构(二)
- 编译原理教程_5 自底向上分析
- Sql分页存储过程(支持多表分页存储)
- 基于yolov5与Deep Sort的流量统计与轨迹跟踪
- 苹果蓝牙连接不上是什么原因_为什么无线鼠标几乎都不用蓝牙连接呢?延迟、回报率是硬伤...
- 数据分析---统计学基础知识
- 解决Tomcat 乱码问题简洁版
- kprobe与perf probe使用简单记录
- 数据链路层-点对点通信方式
- 后端返回一个下载Excel表格的url,要PC浏览器打开下载,前端代码设计
- K8sPod对象的生命周期
- C++中的字符串的定义方式
- Windows 怎么查看是否已经真正激活
- 电子线路实验I综合设计:数字钟
热门文章
- 导入Excel表格数据(一)
- android 备份 wifi密码,请教怎么备份已连接过得wifi密码 android机
- 高通增强现实SDK开发实例,COCOACHINA首发。qualcomm ar sdk
- msysgit + TortoiseGit安装
- 信息技术计算机老师继续教育培训心得,信息技术课教师继续教育心得体会
- 台式计算机喇叭啸叫声,电脑K歌麦和音箱产生啸叫干扰的原因详解
- ORACLE 19c rman恢复 ORA-00283 ORA-01610 错误处理
- ebs workflow builder下载路径
- sql常见语法_常见SQL语法错误以及解决方法
- linux centos 命令行 安装 teamviewers ___yyw合并版