我试图创建一个可重用的方法或功能组件,以便在HTTP方法之间不重复相同的逻辑。为此,我创建了以下方法:
服务.js
import axios from "./axios";
// I cannot use state:
// const [jwt, setJwt] = useState();
const AUTH_TOKEN = localStorage.getItem("tokenKey");
const config = {
headers: {
Accept: "application/json",
Authorization: `Bearer ${AUTH_TOKEN}`
},
};
export const getWithAuth = (url) => {
const request = axios.get(url, config);
return request.then((response) => response.data);
};
export const postWithAuth = (url, body) => {
const request = axios.post(url, body, config);
return request.then((response) => response.data);
};
但是每当我需要使用这个服务中的任何组件或状态时,我都会遇到问题。因此,我想将这个类更改为更好的格式,可能我需要将方法转换为钩子,或者我需要创建一个功能组件并将方法保留在其中。由于我是初学者,无法找到正确的用法示例,您能告诉我一个正确的用法示例吗?
3条答案
按热度按时间wbrvyc0a1#
你可以创建自己的自定义钩子。下面是一个例子,说明了一种方法:
rggaifut2#
我推荐使用ReactQuery。这将帮助你以一种很好的方式组织你的API调用,并将它们暴露为钩子。 checkout https://tanstack.com/query/latest/docs/react/overview。祝你好运!
tkclm6bt3#
你是不是想避免使用async/await?我不知道你遇到了什么问题,但是也许你可以试试这样的方法?
另外,你能使用fetch吗?我最终从我的项目中删除了axios,发现像你这样的可重用调用的实现更简单。