Javascript 当我经过时,你会做什么。第一个参数中的对象

Javascript 当我经过时,你会做什么。第一个参数中的对象,javascript,reactjs,react-hooks,Javascript,Reactjs,React Hooks,在使用react with useEffect和useCallback时,我正在修复一个无限循环 const fetchApi =useCallback(()=>{ setIsLoading(true) fetchDataFunction({ resolve(res) { setFetchData(fromJS(res)) setIsLoading(false) } }) },[para

在使用react with useEffect和useCallback时,我正在修复一个无限循环

const fetchApi =useCallback(()=>{
    setIsLoading(true)
      fetchDataFunction({
        resolve(res) {
          setFetchData(fromJS(res))
          setIsLoading(false)
        }
      })
},[param])
useEffect(()=>{
    fetchApi()
},[fetchApi])

它导致了一个无限循环。但是,如果我按如下所示更改代码

const fetchApi = useCallback({
    fetchApiFunc() {
      setIsLoading(true)
      fetchDataFunction({
        resolve(res) {
          setFetchData(fromJS(res))
          setIsLoading(false)
        }
      })
    }
  },[params])
  const { fetchApiFunc } = fetchApi
  useEffect(() => {
    fetchApiFunc()
  }, [fetchApiFunc])
问题已经解决了。但我仍然不明白当第一个参数中的对象在useCallback中时它会做什么


谢谢。

如果您开始使用React钩子,那么您的组件在某个时候可能需要生命周期方法。这就是开始使用useffect()(又称效果挂钩)的时候。然后砰的一声!!,您遇到了一个无限循环行为,您不知道这到底是为什么。如果发生这种情况,本文将向您解释原因,以及如何预防

问题在哪里? “useffect()”将在初始渲染后运行,然后调用“fetchApiFunc()”。 在“fetchApiFunc()”中,它将更新第行的状态“name”,然后它将触发组件重新渲染。 因此,“useffect()”将再次运行并更新状态。接下来,整个过程再次重复,你被困在一个无限循环中


“如果某些值在重新渲染之间没有更改,您可以告诉React跳过应用效果。为此,请将数组作为可选的第二个参数传递给useEffect”,这里的官方消息是:

如果您开始使用React挂钩,您的组件在某个时候可能需要生命周期方法。这就是开始使用useffect()(又称效果挂钩)的时候。然后砰的一声!!,您遇到了一个无限循环行为,您不知道这到底是为什么。如果发生这种情况,本文将向您解释原因,以及如何预防

问题在哪里? “useffect()”将在初始渲染后运行,然后调用“fetchApiFunc()”。 在“fetchApiFunc()”中,它将更新第行的状态“name”,然后它将触发组件重新渲染。 因此,“useffect()”将再次运行并更新状态。接下来,整个过程再次重复,你被困在一个无限循环中


“如果某些值在重新渲染之间没有更改,您可以告诉React跳过应用效果。为此,请将数组作为可选的第二个参数传递给useEffect”,这里的官员说:

我认为这是一个XY问题,而不是询问您尝试的解决方案,我认为你应该询问你的实际问题和你试图解决的问题。我认为这是一个XY问题,而不是询问你试图解决的问题,我认为你应该询问你的实际问题和你试图解决的问题。