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>
  );
}
相关推荐
To_OC4 小时前
写了三遍 Todo List,我终于搞懂了 React 父子组件到底怎么通信
前端·javascript·react.js
勇往直前plus4 小时前
Vue3(篇一) 核心概念——响应式模板语法与组件基础
前端·javascript·vue.js
咩咩啃树皮4 小时前
第43篇:Vue3计算属性(computed)完全精讲——缓存机制、依赖计算、业务最优解
前端·vue.js·缓存
用户938515635075 小时前
从零搭建 AI 日记助手:用 Milvus 向量数据库 + RAG 让机器读懂你的每一天
javascript·人工智能·全栈
徐小夕6 小时前
花了一周,3亿tokens,我开源了一款 Word 文档智能审查平台,文稿自动质检+可视化分析,告别低效人工审核
前端·算法·github
a1117767 小时前
坦克大战3D Three.js 3D (开源项目)
开发语言·javascript·3d
kyriewen8 小时前
别再乱用useEffect了——你写的10个里有8个不该存在
前端·javascript·react.js
Ivanqhz8 小时前
Rust &‘static str浅析
java·前端·javascript·rust
IT_陈寒8 小时前
SpringBoot这个分页坑,我踩了三天才爬出来
前端·人工智能·后端
颜酱8 小时前
05 | 召回前置准备:根据业务数据库生成各数据库(读取配置阶段)
前端·人工智能·后端