【问题标题】:useEffect keeps on eternal loopuseEffect 保持永恒的循环
【发布时间】:2021-03-04 07:55:56
【问题描述】:

由于缺少对 useEffect 的依赖,我收到了此警告:

 useEffect(() => {
      handleRadioGroup(value)
    }, [value])

React Hook useEffect 缺少一个依赖项:'handleRadioGroup'。要么包含它,要么移除依赖数组 react-hooks/exhaustive-deps

所以我尝试使用 useCallback,只在这个 handleRadioGroup 函数发生变化时运行 useEffect。

  const handleRadioSelection = useCallback((value) => {
  handleRadioGroup(value)
}, [handleRadioGroup])

useEffect(() => {
   handleRadioSelection(value)
}, [value, handleRadioSelection])

问题是,useEffect 在肠内循环上运行。如果我打印 useCallback 函数,它每次都会显示相同的结果。有没有办法消除这个警告,而不进入永恒循环?

【问题讨论】:

  • 下一个代码是否适合你` useEffect(() => { handleRadioGroup(value) }, [value, handleRadioGroup]) `
  • 不,同样的情况
  • 没有“useCallback”,只有“useEffect”和[value,handleRadioGroup]依赖
  • 发生同样的事情,我在useCallback解决方案之前尝试过
  • 您不应仅使用“useCallback”来解决警告。编译器有问题,依赖项 [value, handleRadioGroup] - 有效。

标签: javascript reactjs use-effect


【解决方案1】:

这些无限调用往往会发生,因为您的依赖数组中的变量值(在您的情况下为 valuehandleRadioSelection)在挂钩内发生了变化。如果这是您的情况,那么您必须重新考虑您的逻辑,以确保其中的值不会改变。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2019-08-09
    • 2022-01-18
    • 1970-01-01
    • 2019-04-14
    • 2014-03-04
    • 2020-12-03
    • 1970-01-01
    相关资源
    最近更新 更多