gpt4 book ai didi

reactjs - 自定义 react 钩子(Hook)导致无限循环

转载 作者:行者123 更新时间:2023-12-04 10:04:57 24 4
gpt4 key购买 nike

我有一个自定义的抓取钩子(Hook):

export const useFetch = (url: string) => {
const [response, setResponse] = useState<any>(null);
const [error, setError] = useState<any>(null);

const fetchList = (url: string) => {
return API.get(AMPLIFY_ENPOINTS.default, url, { response: true });
};

useEffect(() => {
const fetchFunc = async () => {
try {
const fetchResponse = await fetchList(url);
setResponse(fetchResponse.data);
} catch (error) {
setError(error);
}
};
fetchFunc();
}, [url]);

return { response, error };
};

然后我在组件中使用它:

const fetchOrders = useFetch(apiUrl);
useEffect(() => {
const { response, error } = fetchOrders;
if (error) setError(error);
if (response) {...}
}, [fetchOrders]);

这会导致无限循环,我应该如何解决它?

最佳答案

fetchOrder 引用会在每次重新渲染时保持更改,因为您每次都返回一个新创建的对象,因此当您在 useEffect 中调用 setError 时它会触发无限循环。

不是将fetchOrders 添加为依赖项,而是分别添加responseerror

const { response, error } = useFetch(apiUrl);
useEffect(() => {
if (error) setError(error);
if (response) {...}
}, [response, error]);

关于reactjs - 自定义 react 钩子(Hook)导致无限循环,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/61634120/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com