AntD Pro登录页面,调用接口实现与服务器的交互

2023-11-01

实现的功能

  1. 登录界面样式
  2. 判断登录信息是否正确,并给于提示
  3. 将填写的用户名和密码传给后台,调用后台接口
  4. 后台返回结果,对结果进行判断
  5. 正确则进入首页,错误则给于相应的提示

登录界面样式部分

1.登录界面样式部分(src ->pages->user->login.js)
在这里插入图片描述
在这里插入图片描述

  render() {
    const { login, submitting } = this.props;
    const { type} = this.state;
    
    return (
      <div className={styles.main}>
        <Login
          defaultActiveKey={type}
          onTabChange={this.onTabChange}
          onSubmit={this.handleSubmit}
          ref={form => { this.loginForm = form;}}
        >
          <div key="account">
          
          //点击登录后,判断错误时返回相应的提示
           {login.status === 'error' &&
              login.type === 'account' &&
              !submitting &&
              this.renderMessage(formatMessage({ id: 'app.login.message-invalid-credentials' }))}
              
              //用户名
            <UserName
              name="name"
              placeholder={`${formatMessage({ id: 'app.login.userName' })}: 请输入用户名`}
              rules={[
                {
                  required: true,
                  message: formatMessage({ id: 'validation.userName.required' }),
                },
              ]}
            />
            //密码
            <Password
              name="password"
              placeholder={`${formatMessage({ id: 'app.login.password' })}: 请输入密码`}
              rules={[
                {
                  required: true,
                  message: formatMessage({ id: 'validation.password.required' }),
                },
              ]}
              onPressEnter={() => this.loginForm.validateFields(this.handleSubmit)}
            />
          </div>

    //登录提交
          <Submit loading={submitting}>
            <FormattedMessage id="app.login.login" />
          </Submit>

        
        </Login>
      </div>
    );
  }
}

使用 rules={[{required: true,message: formatMessage({ id: ‘validation.password.required’ }), },]}进行输入框为空判断

注:pro 通过 umi 插件 umi-plugin-locale 来实现全球化的功能,并且默认开启。 umi-plugin-locale 约定 在src/locales 中引入 相应的 js,例如 en-US.js 和 zh-CN.js, 并且在 config/config.js 中进行了相关的配置。
因此,在zh-CN.js中进行文字内容的编写设置。

点击提交,发送请求


  handleSubmit = (err, values) => {
    const { type } = this.state;
    if (!err) {
      const { dispatch } = this.props;

      dispatch({
        type: 'login/login',
        payload: {
          ...values,
          type,
        },
      }); 
      }
  };

server层接收请求,发送请求,调用后端接口

export async function fakeAccountLogin(params) {
//params为前端发送的数据
  console.log(params);
  return request('/api/login/account', {
    method: 'POST',
    body: params,
  });
}

前端发送的数据为params,发送的post请求,携带的内容为params。

model层接收服务器返回的数据,并对数据进行处理

 *login({ payload }, { call, put }) {
      const response = yield call(fakeAccountLogin, payload);
      yield put({
        type: 'changeLoginStatus',
        payload: response,
      });
      // Login successfully
      if (response.status === 'ok') {
        reloadAuthorized();
        const urlParams = new URL(window.location.href);
        const params = getPageQuery();
        let { redirect } = params;
        if (redirect) {
          const redirectUrlParams = new URL(redirect);
          if (redirectUrlParams.origin === urlParams.origin) {
            redirect = redirect.substr(urlParams.origin.length);
            if (redirect.match(/^\/.*#/)) {
              redirect = redirect.substr(redirect.indexOf('#') + 1);
            }
          } else {
            window.location.href = redirect;
            return;
          }
        }
        yield put(routerRedux.replace(redirect || '/'));
      }
    },

此时后台应发送的数据有:
1,登录信息校验成功,返回status为ok
2.用户权限currentAuthority

注意:该框架中把权限设置单独创建了组建,为utils->authority.js,在这个js中设置了权限判断,没有权限则会进行重定向。因此需要有用户权限,对后端发送的请求进行相应的解析。

前端页面返回结果,渲染界面

**1.**如果校验失败,后端返回失败,前端则进行错误信息提示

在这里插入图片描述

 {login.status === 'error' &&
              login.type === 'account' &&
              !submitting &&
              this.renderMessage(formatMessage({ id: 'app.login.message-invalid-credentials' }))}
  renderMessage = content => (
    <Alert style={{ marginBottom: 24 }} message={content} type="error" showIcon />
  );

2.成功则页面跳转到首页。

总结

1.需要对前端请求后端数据的过程有一定的了解
2.对发送的请求数据以及接收的数据进行相应的处理,数据解析成为自己前端想要渲染的数据。
3.yield call() 来调用(数据接口方法 和 请求参数),yield表示同步调用,这个是generator提供的功能。
4.server里面定义自己的request的请求
5.Fetch发送数据

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

AntD Pro登录页面,调用接口实现与服务器的交互 的相关文章

随机推荐

  • C++ ifstream open 读取txt文件出现中文乱码的解决方法

    由于编解码的问题 txt读写会出现中文乱码 打开txt文件 点另存为 可看到编码方式有 编码方式为UTF 8时 会出现中文乱码 将编码方式换为ANSI时 问题解决
  • spring boot的两种部署方式

    spring boot的两种部署方式 文章目录 spring boot的两种部署方式 前言 一 jar包部署 二 war包部署 jar包和war包方式对比 前言 springboot的打包方式有很多种 有打成war的 有打成jar的 也有直
  • 使用Matlab设计数字滤波器,从原理到代码

    目录 0 前言 1 数字滤波器的设计方法概述 2 IIR数字滤波器的设计方法 2 1 模拟滤波器设计 2 1 1 巴特沃斯滤波器设计 2 1 2 切比雪夫滤波器设计 2 1 3 椭圆滤波器设计 2 2 模拟滤波器转数字滤波器 2 2 1 冲
  • 【Android】Android6.0+ 动态申请权限

    Android 6 0 SDK 版本号大于23后 对于普通权限可以在AndroidMinifest xml文件中可以直接使用 而对于那些危险权限 如 定位权限 通话 发送短信等 需要动态申请权限 下面是一个通过高德定位的案例 MainAct
  • request对象对请求体,请求头参数的解析

    1 请求体参数解析 1 1 GET请求 1 1 1 请求url中 xxx xxx格式为查询字符串参数 通过request GET获取请求参数 1 1 2 请求url中 xxx 2 xxx格式为路径参数 通过request GET获取 1 1
  • IDEA常用配置之双斜杠注释紧跟代码头

    文章目录 双斜杠注释改成紧跟代码头 双斜杠注释改成紧跟代码头
  • qRegisterMetaType-Qt中注册定义类型

    概述 如果想要我们自己自定义的类型也可以有 Qt 自己类型的功能的话 就必须注册我们的类型到 Qt 中 这样才可以在信号和槽的通讯机制中使用我们的自定义的类型 Q DECLARE METATYPE 被 Q DECLARE METATYPEQ
  • QMetaObject::connectSlotsByName: No matching signal for问题的解决方法

    之前是用转到槽的方式添加信号回调 现在发现结构混乱 改为手动connect 删掉之前的回调函数后 再编译 找到报错的地方 删除case 然后自己添加connect 注意此时代码运行会报 QMetaObject connectSlotsByN
  • java二维码工具类,中间带LOGO的,很强大 .

    java view plain copy print package com util cccm import java awt BasicStroke import java awt Graphics import java awt Gr
  • GAMES101-现代计算机图形学学习笔记(作业06)

    参考 https blog csdn net qq 36242312 article details 115495482 思路 上节课的代码 void Renderer Render const Scene scene std vector
  • Vue 核心插件 Vuex (一)

    目录 Vuex 是什么 Vuex 使用场景 Vuex的优势 Vuex的安装和使用 Vuex的安装 Vuex的配置使用 Vuex 是什么 Vuex 是一个专为 Vue js 应用程序开发的状态管理模式 库 它采用集中式存储管理应用的所有组件的
  • citespace的操作流程

    1 下载citespace 下载成功的前提是必须要有Java 参照网上的下载流程 建议bilibili上查看 2 打开citespace 1 2 选择keep using this version 3 弹出来窗口 选择Agree 一般是会弹
  • R语言中的管道操作

    前言 使用R语言进行数据处理是非常方便的 几行代码就可以完成很复杂的操作 但是 对于数据的连续处理 还是有人觉得代码不好看 要么是长长的函数嵌套调用 有点像Lisp感觉 括号包一切 要么就是每次操作赋值一个临时变量 啰嗦 为什么就不能像Li
  • Ubuntu Linux 解压 压缩 目录 .tar.xz .tgz .tar.gz .tar.bz2 .7z

    压缩 tar zcvf file tgz dir dir 是待压缩的目录 解压7z 7z x file 7z 安装7z sudo apt get install p7zip full 解压tar bz2 tar jxvf file tar
  • 配置Ubuntu初始使用软件——Ubuntu_install

    1 配置网络clash 复制clash文件 到主目录下 进入终端 cd clash chmod x clash clash d 再进入设置 设置代理 2 配置输入法 进入终端 安装fcitx sudo apt get install y f
  • python人工智能:命令行创建数据库(泉舟时代)

    1 授课 林德尧 泉舟时代 未来城市技术总监 2 主要文章内容 mysql uroot p create database xxx charset utf8 数据迁移 Flask migrate 官方链接 https flask migra
  • 数据的封装与解封装

    数据的封装与解封装 一 数据的封装与解封装 1 数据的封装过程 2 数据的解封装过程 二 数据的传输过程 1 相关概念 2 网络传输过程中数据封装和解封装模拟 一 数据的封装与解封装 1 数据的封装过程 数据封装过程 在这里我们举例说明 以
  • Android音视频开发(2)常用的系统播放器MediaPlayer

    1 状态图及生命周期 MediaPlayer是一个多媒体播放类 通过它控制音视频流或本地音视频资源的播放过程 它分为很多状态 如下图所示 图中的单箭头弧代表同步函数调用 双箭头弧代表异步函数调用 1 1 Idle状态 End状态以及生命周期
  • PromptDet: Towards Open-vocabulary Detection using Uncurated Images (ECCV2022)

    PromptDet Towards Open vocabulary Detection using Uncurated Images eccv2022 本文作者的核心目的是 在使用最少的人工成本下 来定位和识别 novel categori
  • AntD Pro登录页面,调用接口实现与服务器的交互

    AntD Pro登录 实现的功能 登录界面样式部分 点击提交 发送请求 server层接收请求 发送请求 调用后端接口 model层接收服务器返回的数据 并对数据进行处理 前端页面返回结果 渲染界面 总结 实现的功能 登录界面样式 判断登录