umi+react+dva 配置request的全局配置(请求拦截与响应拦截)和调用请求

目录

umi+react+dva 配置request的全局配置(请求拦截与响应拦截)和调用请求

配置request的全局配置(请求拦截与响应拦截)

app.js

js 复制代码
// 运行时 配置

// 异步请求相关 运行时配置
 export const request = {
  timeout: 1000 * 10, // 10s超时
  // 请求拦截
  requestInterceptors:[
    (url,options) => {
      console.log('请求拦截',url,"options",options);
      return options
    }
  ],
  // 响应拦截
  responseInterceptors:[
    (response,options) => {
      console.log('响应拦截',response,"options",options);
      return response
    }
  ]
 }

使用useRequest或者普通方法 调用请求

about.jsx

js 复制代码
import React, { useState, useEffect } from 'react';
import { Space, Table, Button ,message} from 'antd';
import { getStyList, delStyList } from '@/api/about.js';
import { useRequest } from "umi"
export default function About_1(props) {
  const columns = [
    {
      title: '姓名',
      dataIndex: 'name',
      key: 'name',
    },
    {
      title: '日期',
      dataIndex: 'date',
      key: 'date',
    },
    {
      title: '分数',
      dataIndex: 'score',
      key: 'score',
    },
    {
      title: '住址',
      dataIndex: 'city',
      key: 'city',
    },
    {
      title: 'Action',
      dataIndex: '',
      key: 'action',
      render: (text, record) => (
        <Space size="middle">
          <Button type="primary" size="small" onClick={() => edit(record)}>
            编辑
          </Button>
          <Button
            type="primary"
            danger
            size="small"
            onClick={() => del(record)}
          >
            删除
          </Button>
        </Space>
      ),
    },
  ];
//   const [data, setData] = useState([]);
//   const [loading, setLoading] = useState(true);
  useEffect(() => {
    // init(); // 初始化数据 方法1
  }, []);
  const init = async () => {
    setLoading(true)
    const res = await getStyList();
    console.log('res', res);
    setLoading(false)
    if (res.code == 200) {
      setData(res.data);
    } else {
      message.warning(res.msg);
    }
  };

  // 初始化数据 方法2 data数据响应,loading状态,error错误信息,getStyListReq 重新加载数据
  let { data = [], loading, error,run: getStyListReq } = useRequest(async () => {
    let res = await getStyList()
    console.log('res',res);
    return {
        data: res.data ? res.data : []
    }
  })
  console.log('data, loading, error',data, loading, error,getStyListReq);

  // 指定table的key值为id
  const rowKeyFn = (row) => row.id;
  // 编辑
  const edit = (row) => {
    console.log('edit', row);
  };
  // 删除
  const del = async (row) => {
    // console.log('del', row);
    const res = await delStyList(row.id);
    // console.log('res',res);
    if ( res.code ) {
        message.success("删除成功");
        // init()
        getStyListReq();
    } else {
        message.warning(res.msg);
    }
  };

  return (
    <div className="content">
      <Table
        dataSource={data}
        columns={columns}
        rowKey={rowKeyFn}
        size="middle"
        loading={loading}
      />
    </div>
  );
}
相关推荐
wuhen_n27 分钟前
案例分析:从“慢”到“快”,一个后台管理页面的优化全记录
前端·javascript·vue.js
早點睡3902 小时前
ReactNative项目OpenHarmony三方库集成实战:react-native-dropdown-picker
javascript·react native·react.js
升鲜宝供应链及收银系统源代码服务8 小时前
《IntelliJ + Claude Code + Gemini + ChatGPT 实战配置手册升鲜宝》
java·前端·数据库·chatgpt·供应链系统·生鲜配送
i建模9 小时前
将Edge浏览器的标签页从顶部水平排列**移至左侧垂直侧边栏
前端·edge
跟着珅聪学java9 小时前
js编写中文转unicode 教程
前端·javascript·数据库
英俊潇洒美少年9 小时前
Vue3 深入响应式系统
前端·javascript·vue.js
颜酱9 小时前
回溯算法实战练习(3)
javascript·后端·算法
英俊潇洒美少年10 小时前
React 最核心 3 大底层原理:Fiber + Diff + 事件系统
前端·react.js·前端框架
我命由我1234511 小时前
React Router 6 - 概述、基础路由、重定向、NavLink、路由表
前端·javascript·react.js·前端框架·ecmascript·html5·js
LJianK111 小时前
java封装
java·前端·数据库