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>
  );
}
相关推荐
独立开发之道8 小时前
【three.js教程】Three.js 材质详解:从“不反光“到“物理级真实“怎么选
开发语言·javascript·材质
ITmaster07318 小时前
从零到一!前端搭建本地轻量化 RAG 问答系统
前端
夏炳辉.9 小时前
Flex布局中 flex: 1 的完整解析与实战指南
前端·css·css3
CIO_Alliance9 小时前
AI提示系列(2)| Few-shot与ReAct有何不同? 大模型工具调用的底层逻辑详解
前端·人工智能·深度学习·神经网络·react.js·前端框架·ai+ipaas
waillyer10 小时前
企业知识库智能问答 Agent(React + Nest)
javascript·redis·agent
cindershade10 小时前
别只收三个数字:前端 RUM 如何建立可解释的体验数据链
前端
前端 贾公子10 小时前
第09章:上下文与记忆 (4)
java·服务器·前端
Coodor10 小时前
使用web也可以写NFC微信小程序拉取
前端·微信小程序·小程序·nfc拉起小程序
Wang's Blog11 小时前
Vibe Coding一人即团队系列28: 前端、后端与数据库的概念解析
前端·数据库