美文网首页React
react的umi hooks的useRequest 和 axi

react的umi hooks的useRequest 和 axi

作者: Lia代码猪崽 | 来源:发表于2020-05-22 16:17 被阅读0次

一、封装axios

src/utils/request.ts

import axios from 'axios';

const service = axios.create({
    baseURL: '/api/test',
    timeout: 15 * 1000
})

// http request 拦截器
service.interceptors.request.use(
    config => {
        config.headers['Content-Type'] = 'application/x-www-form-urlencoded'
        return config
    },
    err => {
        return Promise.reject(err);
    })

service.interceptors.response.use(
    response => {
        return response;
    },
    error => {
        // if (error.response) {
        //     switch (error.response.status) {
        //         case 400:
        //         case 401:
        //             break;
        //         case 404:
        //             break;
        //         case 405:
        //             break;
        //         case 500:
        //             break;
        //         default:
        //             ;
        //     }
        // } else {}
        // alert('请求接口失败,请联系管理员');
        return Promise.reject(error) // 返回接口返回的错误信息
    })

export default service

有没有发现,不论拦截到的接口返回结果是成功还是失败,我们仍然返回了个Promise对象

二、具体调用步骤

import React, { useState } from 'react';
import { useToggle, useMount } from '@umijs/hooks';
import { useRequest } from "@umijs/hooks";
import request from '@/utils/request.ts';

export default () => {
    const { state: show, toggle: setShow } = useToggle(false);

    // 没错就是这么简单,返回一个Promise对象
    function getBasic(): Promise<any> {
        return request('/getConfig');  // 实际上调用的完整api为 /api/test/getConfig
    }

    const { run: runGetBasic } = useRequest(getBasic, {
        manual: true,
        onSuccess: (res) => {
            // 这是接口定义的业务判断,与本文无关
            if (res.data.status) {
                // 成功了就让show值为true
                setShow(true)
            } else {
                alert(res.data.info);
            }
        }
    });

    // 在组件首次渲染时,执行方法。
    useMount(
        () => {
            runGetBasic();
        }
    );

    return (
      <div>{ show }</div>
    )
}

三、相关文档

相关文章

  • react的umi hooks的useRequest 和 axi

    一、封装axios src/utils/request.ts: 有没有发现,不论拦截到的接口返回结果是成功还是失败...

  • umi - useRequest

    useRequest:用于异步请求管理 1. 一般用法 2. 轮询请求用法 3. 其他属性用法 pollingWh...

  • react hooks umi例子

    随着react hooks的出现我们越来越多的项目已经转由hooks来写,没有看过之前关于hooks的介绍的同学们...

  • 某公司的前端规范

    框架选型csr方案框架基于umi3(react+hooks+ts)搭建文档:https://umijs.org/z...

  • React Hooks

    React Hooks Hooks其实就是有状态的函数式组件。 React Hooks让React的成本降低了很多...

  • React Hooks

    前言 React Conf 2018 上 React 提出了关于 React Hooks 的提案,Hooks 作为...

  • 关于 React Hooks

    研习 react hooks 文档后,一些个人认为值得理解和关注的内容。 useState react hooks...

  • react-hooks

    前置 学习面试视频 总结react hooks react-hooks react-hooks为函数组件提供了一些...

  • react-hooks

    react-hooks react-hooks 是react16.8以后,react新增的钩子API,目的是增加代...

  • React-hooks API介绍

    react-hooks HOOKS hooks概念在React Conf 2018被提出来,并将在未来的版本中被...

网友评论

    本文标题:react的umi hooks的useRequest 和 axi

    本文链接:https://www.haomeiwen.com/subject/afoqahtx.html