React+ts+vite脚手架搭建(五)【登录篇】

前言

上一篇我们介绍了在脚手架中配置代码格式规范、代码提交规范:React+ts+vite脚手架搭建(五)【规范篇】

本篇我们将开始脚手架中的最后一篇--登录篇

本文我们将完成一个传统的账号+密码登录功能

具体步骤

新建一个登录路由

在路由配置中新建一个登录路由

新建登录+代码

  • 在这段代码中我们分别做了:
    • 账号和密码的输入框、登录按钮
    • 点击登录按钮逻辑
    • 登录成功后将返回的token保存到localStorage
js 复制代码
import React, { useState } from "react";
import "./index.css";
const Login = () => {
  const [form, setForm] = useState({
    username: "",
    password: "",
  });

  const handleChange = (e: React.ChangeEvent<HTMLInputElement>) => {
    const { name, value } = e.target;
    setForm({
      ...form,
      [name]: value,
    });
  };

  const login = () => {
    if (!form.username || !form.password) {
      alert("请输入账号密码");
      return;
    } else {
      localStorage.setItem("token", "123456");
    }
  };

  return (
    <div className="login">
      <h1>登录页</h1>
      <div>
        <input
          type="text"
          placeholder="请输入账号"
          name="username"
          value={form.username}
          onChange={handleChange}
        />
      </div>
      <div>
        <input
          type="password"
          placeholder="请输入密码"
          name="password"
          value={form.password}
          onChange={handleChange}
        />
      </div>
      <button onClick={login}>登录</button>
    </div>
  );
};

export default Login;

页面如下:

token的携带

我们存储完token后,需要在每次的接口请求中都携带上,这里我们直接在请求拦截器上携带上

登录的校验

一般来说一个需要登录的系统,大部分的接口都是需要登录验证的,所以我们直接将登录的校验写在响应拦截器中,当发现接口响应回来的code为未登录的code时,即直接跳转到登录页重新开始登录

总结

这样一个极简的登录系统就已经做好。。。

这里有几点补充:

  • 系统登录的token一般是通过接口返回的,我这里是模拟了一下,大家后续可以根据自己项目的实际情况来写接口
  • 登录的token我是存在localStorage中的,你也可以存储在sessionStorage中
相关推荐
随风一样自由4 小时前
【前端独角兽】刚进入前端领域的前端开发用jQuery还是Vue3?
前端·javascript·vue3·jquery
IMPYLH5 小时前
HTML 的 <data> 元素
前端·html
YHHLAI5 小时前
[特殊字符] 面试中的 Promise —— 从入门到精通
前端·javascript·面试
weixin_BYSJ19876 小时前
SpringBoot + MySQL 乒乓球运动员信息管理系统项目实战--附源码04954
java·javascript·spring boot·python·django·flask·php
沪飘大军7 小时前
ll-llm:一个零依赖、可插拔的 OpenAI 兼容 LLM 代理
javascript
kyriewen7 小时前
我扒了 GPT-5.6 的全部编程跑分——有一项 OpenAI 没敢放出来
前端·gpt·ai编程
前端H8 小时前
微前端 v3 架构升级:从加载隔离到状态协同
前端·架构·状态模式
山河木马8 小时前
GPU自动处理专题3-NDC怎么映射成屏幕像素坐标(视口变换)
javascript·webgl·图形学
陆枫Larry9 小时前
小程序包体积优化:用 SVG 图片替换 iconfont,并保留 CSS 控色能力
前端
Appthing9 小时前
在 TanStack Start 中使用 VitePWA 的正确配置
javascript