自定义Hooks网络请求

/**

  • @Auther: 1580043700@qq.com
  • @Date: 2020/12/3 14:19
  • @Description: 自定义Hooks网络请求,

*/
import {useEffect, useState} from 'react';

/**

  • 自定义Hooks网络请求,
  • @param promise ajax请求
  • @returns {{data: object|number|boolean|string, loading: boolean, error: string}}

*/
export default function useRequest(promise, params = {}) {

let [loading, setLoading] = useState(false);
let [data, setData] = useState({});
let [error, setError] = useState('');

useEffect(() => {
    setError('');
    setLoading(true);

    promise(params)
        .then(({payload}) => {
            setLoading(false);
            setData(payload);
        })
        .catch((err) => {
            setLoading(false);
            setError(err?.msg || `服务器异常,请稍后重试,code:${err.code}`);
            // 这里可以放一个toast提示
            console.error('请求失败', err);
        });
}, [params]);

return {data, loading, error};

}

上一篇:CSS样式表与格式布局


下一篇:C# ASP.NET中Process.Start没有反应也没有报错的解决方法