【问题标题】:why does useEffect not re-run having setState as dependency?为什么 useEffect 不会以 setState 作为依赖项重新运行?
【发布时间】:2021-05-01 00:56:22
【问题描述】:

我不知道为什么当我调用 useState 依赖项时 useEffect 不会重新运行,我试图将状态作为 useEffect 依赖项传递,但它会产生无限循环。我想在调用 setState 时运行 useEffect。

有什么办法吗?

    useEffect(() => {
    console.log('useEffect initial state ')
    fetch(API)
        .then(res => res.json())
        .then(response => {
          setState(response.data);
        })
    
      }, [setState]);


【问题讨论】:

    标签: react-hooks use-effect


    【解决方案1】:

    导致无限循环是因为您正在更改效果内的状态,然后重新触发它,这是预期的。

    这是一个设计问题,您需要将效果设置得更加精细,只更改它需要的状态,并且只对应该触发刷新的状态做出反应。

    【讨论】:

    • 谢谢!我没注意到
    • 太棒了。如果您觉得这有帮助,请投票/接受。另外要清楚的是,使用 state NOT setstate 更接近正确。即使它在一个循环中,但希望现在你明白为什么它会进入一个无限循环,因为它正在做它应该做的事情!这意味着您可以完全设计出适合您领域的方法!如果您仍然需要帮助,请告诉我。
    猜你喜欢
    • 1970-01-01
    • 2022-11-25
    • 1970-01-01
    • 2020-07-15
    • 2021-07-23
    • 1970-01-01
    • 1970-01-01
    • 2020-12-08
    相关资源
    最近更新 更多