我对React和React钩子有些陌生。我有一个组件,调用通信钩子,在其中使用AXIOS调用API,然后将JSON响应反馈给组件。问题是该组件连续调用钩子六次,其中四次返回未定义数据,另外两次返回预期的JSON数据(这两次都相同)。
我快速使用console.log进行了确认,以确定它确实是组件调用了多个钩子还是发生在钩子内部,结果发现是组件调用了多个钩子。
我应该如何才能仅在需要时调用一次钩子,而不像现在这样多次调用呢?以下是相关部分(不包括小组件中的其余代码,因为这与问题无关):
export default function TestWidget() {
//Fetch data from communicator
console.log("called");
const getJSONData = useCommunicatorAPI('https://jsonplaceholder.typicode.com/todos/1');
//Breakdown passed data
const {lastName, alertList, warningList} = getJSONData;
return (
<h1 id="welcomeTitle">Welcome {lastName}!</h1>
);
}
export const useCommunicatorAPI = (requestAPI, requestData) => {
const [{ data, loading, error }, refetch] = useAxios('https://jsonplaceholder.typicode.com/todos/1', []);
console.log("data in Communicator:", data);
return {data};
}
etc......
。请参见[mre]。 - zero298useCommunicatorAPI
吗?那是第三方库吗? - zero298