Reactjs 轴钩

Reactjs 轴钩,reactjs,axios,react-hooks,Reactjs,Axios,React Hooks,我在我的react项目中使用axios挂钩。我有一个问题,每当我重新呈现组件时,后端会被调用,并且在开始时,相同的端点会被调用两次。 我以以下方式使用它: import useMyHook from '../../hooks/useMyHook '; export default function MyComponent() { const { getData } = useMyHook (category); ... <Button onClick={getData}...

我在我的react项目中使用axios挂钩。我有一个问题,每当我重新呈现组件时,后端会被调用,并且在开始时,相同的端点会被调用两次。 我以以下方式使用它:

import useMyHook from '../../hooks/useMyHook ';

export default function MyComponent() {
  const { getData } = useMyHook (category);
  ...
  <Button onClick={getData}...
}
我的实现有什么问题吗? 另外,我已经看到,
useAxios

useAxios(){...}, [stringifiedConfig]) and stringifiedConfig=JSON.stringify(config)

在我的理解中,如果配置没有改变,它不应该重新调用后端。

基本上,问题是因为状态分派。 无论何时更改状态,调用axios钩子的组件都会卸载并再次装载,因此我们会执行第二次调用


解决方法是检查组件的useEffect中的值是否未定义,然后调用axios钩子并禁用useAxios中的自动调用{manual:true}。

这是什么意思?@SuleymanSahBackEnd@FarukT谢谢,我将编辑问题:)您的
useAxios
挂钩没有“防护”。每次react重新呈现
MyComponent
,都会调用您的自定义钩子
useMyHook
。然后在那个钩子里你总是做axios调用。您需要定义何时调用
useAxios
hook以及何时不调用的条件。为此,您应该在DEP中使用
useffect
钩子。它似乎在axios钩子库中被“保护”。有一个useEffect,在[stringifiedConfig]更新时,我们可以调用后端:
useAxios(){...}, [stringifiedConfig]) and stringifiedConfig=JSON.stringify(config)