如果您使用的是功能组件,那么这是使用hooks的好地方
可以是这样的:
import React, { useState } from 'react';
import axios from 'axios';
export const useRequest = () => {
const [isLoading, setIsLoading] = useState(false);
const [isError, setIsError] = useState(true);
const [data, setData] = useState(null);
const yourAxiosRequest = () => {
//implementation of your axios request
}
const requestHandler = async (url, data) => {
setIsLoading(true);
try {
await const response = yourAxiosRequest({
url,
data,
method: 'POST',
});
setData(response.data);
} catch (e) {
setIsError(true);
} finally {
setIsLoading(false);
}
}
return {
isError,
isLoading,
data,
requestHandler
};
};
然后在你的组件中你可以像这样使用它
import React from 'react';
import { useRequest } from 'common/useRequest';
//your component code
const { isLoading, isError, data, requestHandler } = useRequest();
const clickHandler = (data) => requestHandler(url, data);
//your component code