【问题标题】:React useeffect missing dependencies for update the first item in arrayReact useeffect缺少依赖项以更新数组中的第一项
【发布时间】:2020-11-17 19:22:13
【问题描述】:

我有一个列表,当列表中有一个来自 redux 的新项目(仅当列表为空时)并且事件数组正在更新时,我想选择新项目,更新列表和 redux状态。

1-是否有另一种干净的方法可以在新事件中选择所选事件? 2-当所有列表完成(并且不是空的)加载列表然后还=设置某些条件选择时,我是否需要不同的使用效果?

我有以下useEffect:(我只想选择一次)

  useEffect(() => {
    if (events.length === 1) {
      if (events[0].image) {
        updateSelectedIndex(events[0].imageId);
        dispatch(setCurrentEvent(events[0].imageId));
      }
    }
  }, [events[0], dispatch]);

我收到了警告:

  Line 88:6:   React Hook useEffect has a missing dependency: 'events'. Either include it or remove the dependency array  

我真的需要修复它吗?如果我将事件添加到依赖项中,这意味着任何更改都会生效,并且由于条件而不会执行任何操作?真的很重要吗?

【问题讨论】:

    标签: reactjs use-effect


    【解决方案1】:

    不要听events[0],而只是听事件。进入效果没关系,因为你的条件,它什么也做不了。

    【讨论】:

    • 但随后它将进入条件events[0].image !== nullevrey cycle。我需要它一次
    • 如果你需要它一次,那么设置一个你第一次完成后分配的标志怎么样?或者问自己为什么需要使用 Effect,而不是你从事件来源调用的 useState
    • 是的,该事件正在更新几次 - 只有当图像准备好时我才需要应用它,您建议如何处理它。 ?
    • events[0].image !== null 第一次为真时,您可以简单地将图像分配给一个变量,或者将一个真值分配给像isImageHandled 这样的标志并将其用作您的条件。跨度>
    • 但在重新渲染时它会再次分配?没有?
    猜你喜欢
    • 2022-06-12
    • 2021-08-19
    • 2021-02-23
    • 2019-10-24
    • 2020-10-26
    • 2020-03-07
    • 2020-02-25
    • 2020-06-11
    相关资源
    最近更新 更多