亚洲乱码中文字幕综合,中国熟女仑乱hd,亚洲精品乱拍国产一区二区三区,一本大道卡一卡二卡三乱码全集资源,又粗又黄又硬又爽的免费视频

使用React和Redux Toolkit實現(xiàn)用戶登錄功能

 更新時間:2023年05月10日 11:44:13   作者:Miketutu  
在React中,用戶登錄功能是一個常見的需求,為了實現(xiàn)該功能,需要對用戶輸入的用戶名和密碼進行驗證,并將驗證結(jié)果保存到應用程序狀態(tài)中,在React中,可以使用Redux Toolkit來管理應用程序狀態(tài),從而實現(xiàn)用戶登錄功能,需要詳細了解可以參考下文

一、在utils創(chuàng)建loadable.tsx文件

這里是tsx文件,不是ts文件,因為ts文件不識別jsx語法

因為loadable是異步加載,返回的是promise,所以需要對返回的promise進行類型限制

import  Loadable  from "react-loadable.tsx";
const withLoadable = (component:()=>Promise<any>)=>{
        return Loadable({
            loader:component,
            loading:()=><div>加載中</div>,
        })
}
export default withLoadable

二、在router文件下創(chuàng)建routes.tsx

這里是tsx文件,不是ts文件,因為ts文件不識別jsx語法

  • 導入RouteObject
  • 導入withLoadable.tsx文件
  • 導入Login組件
    import {RouteObject} from 'react-router-dom'
    import withLoadable from 'withLoadable.tsx文件地址'
    const Login = withLoadable(()=>import('Login.tsx地址'))
    const routes:Array<RouteObject> = [
        {
            path:'/login'
            element:</Login>
        }
    ]

三、在index.tsx中配置

導入Browser

import React from 'react';
import ReactDOM from 'react-dom/client';
import App from './App';
import { BrowserRouter } from 'react-router-dom'
const root = ReactDOM.createRoot(
  document.getElementById('root') as HTMLElement
);
root.render(
  <BrowserRouter>
    <App />
  </BrowserRouter>
);

四、App.tsx文件配置

useRoutes是Hook組件

import {useRoutes} from 'react-router-dom'
import routes from 'routes地址'
import React from 'react';
function App() {
  return useRoutes(routes)
}
export default App;

axios二次封裝

導入

import axios,{InternalAxiosRequestConfig,AxiosResponse,AxiosError} from 'axios'
import {TOKEN_KEY} from '../utils/contant'
import {getToken,removeToken} from '../utils/h5Stroe'
import {message} from 'antd'
import {REQUESTURLERROR,TOKENVALDATE} from '../utils/contant'

響應攔截器封裝:

導入axios的類型聲明:AxiosResponse

newAxios.interceptors.response.use((response:AxiosResponse)=>{
    return response
},(error:AxiosError)=>{
    if(error.response){
        switch(error.response.status){
            case 404:
                message.warning(REQUESTURLERROR)
                break;
            case 401:
                message.warning(TOKENVALDATE)
                removeToken(TOKEN_KEY)
                break
        }
    }
})

請求攔截器的封裝

導入axios的類型聲明:InternalAxiosRequestConfig

// 請求攔截器
newAxios.interceptors.request.use((req:InternalAxiosRequestConfig)=>{
        req.headers.Authorization =  getToken(TOKEN_KEY)
        return req
})

請求封裝

創(chuàng)建接口文件對請求參數(shù)進行類型限制,下面有user.ts文件

export interface IUser{
    userName:string
    password:Number
}

封裝登錄請求

import request  from "../../utils/axiosApi";
import {IUser} from '../../types/users'
export default {
    login:(data:IUser)=>request.post('/users/login',data)
}

組件配置

import React from 'react'
import {Form,Button,Card,Input, message} from 'antd'
import { UserOutlined, LockOutlined} from '@ant-design/icons'
import $api from '../api/index'
import {IUser} from '../types/users'
import * as contant from '../utils/contant'
import {setToken} from '../utils/h5Stroe'
import {TOKEN_KEY} from '../utils/contant'
import {useNavigate} from 'react-router-dom'
export default function Login() {
  const nav = useNavigate()
  const loginApi = async(arg:IUser)=>{
      const result = await $api.user.login(arg)
      console.log(result);
        if(result.data.code){
          setToken(TOKEN_KEY,result.data.token)
          message.success(contant.LoginSuccess)
          nav('/')
        }
  }
  return (
    <div>
      <Card style={{width:'500px'}}>
        <Form onFinish={loginApi}>
          <Form.Item label='賬號' name='username' rules={[{ required:true, message:contant.USERNOTNULL}]}>
            <Input prefix={<UserOutlined></UserOutlined>} placeholder='請輸入用戶名'></Input>
          </Form.Item>
          <Form.Item label='密碼' name='password' rules={[{ required:true, message:contant.PASSWORDNOTNULL}]}>
            <Input prefix={<LockOutlined></LockOutlined>} placeholder='請輸入密碼'></Input>
          </Form.Item>
          <Form.Item>
            <Button type='primary' htmlType='submit'>登錄</Button>
          </Form.Item>
        </Form>
      </Card>
    </div>
  )
}

到此這篇關(guān)于使用React和Redux Toolkit實現(xiàn)用戶登錄功能的文章就介紹到這了,更多相關(guān)React RTK實現(xiàn)登錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

相關(guān)文章

  • React 小技巧教你如何擺脫hooks依賴煩惱

    React 小技巧教你如何擺脫hooks依賴煩惱

    Hooks 是一種函數(shù),該函數(shù)允許您從函數(shù)式組件 “勾住(hook into)” React 狀態(tài)和生命周期功能。 Hooks 在類內(nèi)部不起作用 - 它們允許你無需類就使用 React,本文帶領(lǐng)大家學習React 小技巧教你如何擺脫hooks依賴煩惱,感興趣的朋友一起看看吧
    2021-05-05
  • React手稿之 React-Saga的詳解

    React手稿之 React-Saga的詳解

    這篇文章主要介紹了React手稿之 React-Saga的詳解,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧
    2018-11-11
  • react-router?v6實現(xiàn)動態(tài)路由實例

    react-router?v6實現(xiàn)動態(tài)路由實例

    這篇文章主要為大家介紹了react-router?v6實現(xiàn)動態(tài)路由實例詳解,<BR>有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-08-08
  • react表單受控的實現(xiàn)方案

    react表單受控的實現(xiàn)方案

    數(shù)據(jù)的受控控制一直是react里的一個痛點,當我想要實現(xiàn)一個輸入框的受控控制時,我需要定義一個onChange和value,手動去實現(xiàn)數(shù)據(jù)的綁定,本文小編給大家介紹了react表單受控的實現(xiàn)方案,需要的朋友可以參考下
    2023-12-12
  • 深入淺析react native es6語法

    深入淺析react native es6語法

    這篇文章主要介紹了深入淺析react native es6語法的相關(guān)資料,需要的朋友可以參考下
    2015-12-12
  • Webpack3+React16代碼分割的實現(xiàn)

    Webpack3+React16代碼分割的實現(xiàn)

    這篇文章主要介紹了Webpack3+React16代碼分割的實現(xiàn),文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧
    2021-03-03
  • React與Redux之數(shù)組處理講解

    React與Redux之數(shù)組處理講解

    這篇文章主要介紹了React與Redux之數(shù)組處理講解,本篇文章通過簡要的案例,講解了該項技術(shù)的了解與使用,以下就是詳細內(nèi)容,需要的朋友可以參考下
    2021-09-09
  • react echarts tooltip 區(qū)域新加輸入框編輯保存數(shù)據(jù)功能

    react echarts tooltip 區(qū)域新加輸入框編輯保存數(shù)據(jù)功能

    這篇文章主要介紹了react echarts tooltip 區(qū)域新加輸入框編輯保存數(shù)據(jù)功能,大概思路是用一個div包裹echarts, 然后在echarts的同級新建一個div用來用來模擬真實tooltip,通過鼠標移入移出事件控制真實tooltip的顯示與隱藏,需要的朋友可以參考下
    2023-05-05
  • React項目仿小紅書首頁保姆級實戰(zhàn)教程

    React項目仿小紅書首頁保姆級實戰(zhàn)教程

    React 是一個用于構(gòu)建用戶界面的 Javascript庫,接下來將通過實戰(zhàn)小紅書首頁的詳細介紹其設計思路和方法,將讀者帶入到react的開源世界,需要的朋友可以參考下
    2022-07-07
  • react中ref獲取dom或者組件的實現(xiàn)方法

    react中ref獲取dom或者組件的實現(xiàn)方法

    這篇文章主要介紹了react中ref獲取dom或者組件的實現(xiàn)方法,具有很好的參考價值,希望對大家有所幫助。如有錯誤或未考慮完全的地方,望不吝賜教
    2023-05-05

最新評論