使用 React Query 为每个请求附加令牌密钥以请求数据的简单方法
Easy way to append token key to request data for every request with React Query
我必须添加一个在登录时创建的令牌,并将 cookie 放入我发出的每个提取请求的请求数据中。我目前正在使用自定义挂钩来完成此操作,该挂钩每次都会添加它,因此我不必多次添加它。有没有更简单的方法?也许使用 axios?
这是我的自定义挂钩:
import { useQuery as useBaseQuery } from 'react-query';
import axios from 'axios';
const fetcher = async (url, options) => {
const token = Cookies.get('TOKEN');
const { data } = await axios.get(url, {
data: { ...options, 'TOKEN': token },
});
return data;
};
const useQuery = (queryKey, query, options) => {
return useBaseQuery(queryKey, async () => {
return await fetcher(query, options);
});
};
export default useQuery;
并且是这样使用的:
import useQuery from './useBaseQuery';
const requestData = {
method: 'GET',
path: pathToUrl,
};
export default function useGetActionAlerts() {
return useQuery('actionAlerts', '/bin/user', requestData);
}
您需要使用文档中的拦截器
You can intercept requests or responses before they are handled by then or catch.
我必须添加一个在登录时创建的令牌,并将 cookie 放入我发出的每个提取请求的请求数据中。我目前正在使用自定义挂钩来完成此操作,该挂钩每次都会添加它,因此我不必多次添加它。有没有更简单的方法?也许使用 axios?
这是我的自定义挂钩:
import { useQuery as useBaseQuery } from 'react-query';
import axios from 'axios';
const fetcher = async (url, options) => {
const token = Cookies.get('TOKEN');
const { data } = await axios.get(url, {
data: { ...options, 'TOKEN': token },
});
return data;
};
const useQuery = (queryKey, query, options) => {
return useBaseQuery(queryKey, async () => {
return await fetcher(query, options);
});
};
export default useQuery;
并且是这样使用的:
import useQuery from './useBaseQuery';
const requestData = {
method: 'GET',
path: pathToUrl,
};
export default function useGetActionAlerts() {
return useQuery('actionAlerts', '/bin/user', requestData);
}
您需要使用文档中的拦截器
You can intercept requests or responses before they are handled by then or catch.