我正在使用Reaction开发一个Web应用程序.在我的项目中,有多个实例需要向服务器发送GET request
并接收data
和loading
状态.所以我为同样的问题定制了一个钩子
以下是自定义挂钩:
export const useGetApi = (link) => {
const [data, setData] = useState();
const [loading, setLoading] = useState(true);
const handleFetch = async () => {
const cancelToken = axios.CancelToken.source();
try {
const response = await axios.get(link, { cancelToken: cancelToken.token });
setLoading(false);
setData(response.data.data);
} catch (err) {
setLoading(true);
//handle error
}
};
useEffect(() => {
handleFetch();
}, [JSON.stringify(data)]);
return [data, loading];
};
在大多数情况下,它是有效的,我只需将link
作为参数传递给钩子.但在某些情况下,我需要首先修改链接,然后将修改后的链接作为参数传递给挂钩.
我try 使用以下方法来实现这一点:
export const App=()=>{
const link='/helloworld'
const modifiedLink= getModifiedLink(link);
useEffect(()=>{
const [data,loading]= useGetApi(modifiedLink);
},[])
}
我收到以下错误:
React Hook "useGetApi" cannot be called inside a callback. React Hooks must be called in a React function component or a custom React Hook function.
我是否需要为链接先修改后传递的情况创建单独的钩子?因为这将导致大量可重复的代码.有没有办法使用我现有的钩子,同时仍然满足我的要求.请给我带路.