首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >React缺少一个依赖项:'reduxArray‘。要么包含它,要么删除依赖数组。

React缺少一个依赖项:'reduxArray‘。要么包含它,要么删除依赖数组。
EN

Stack Overflow用户
提问于 2022-09-15 15:17:50
回答 4查看 39关注 0票数 0

当数据发生如下变化时,我需要调用useEffect,

代码语言:javascript
复制
 useEffect(()=>{
     const filteredData = reduxArray.filter(
       () => // do something
 );
     store.dispatch(method({reduxArray:[...filteredData]}))
  },[data])

这实际上满足了我的要求,对我来说也很好,但Eslint对此并不满意,并给出了错误React useEffect缺少一个依赖项:'reduxArray‘。要么包含它,要么删除依赖数组

在这种情况下,如果我在依赖项数组中添加reduxArray,那么它将导致useEffect中的无限循环,因为我要在useEffect中更新reduxArray。除了禁用eslint之外,还有其他方法可以克服这一点吗?

EN

回答 4

Stack Overflow用户

发布于 2022-09-15 15:31:15

我不知道这是否是一个好的解决方案,但如果你想删除隐形眼镜警告,那就用

代码语言:javascript
复制
  useEffect(()=>{
   const filteredData = reduxArray.filter(() => // do something);
   store.dispatch(method({reduxArray:[...filteredData]}))
   // eslint-disable-next-line react-hooks/exhaustive-deps
  },[data])
票数 1
EN

Stack Overflow用户

发布于 2022-09-15 15:34:00

我喜欢的解决方案是在函数中使用useCallback,这将防止无限循环。

代码语言:javascript
复制
const handleChangeData = useCallback (() => {
    const filteredData = reduxArray.filter();
    store.dispatch(method({reduxArray:[...filteredData]}))
  },[data,reduxArray])

  useEffect(()=>{
    handleChangeData
 },[handleChangeData])
票数 0
EN

Stack Overflow用户

发布于 2022-09-15 15:40:07

解决此问题的一个解决方案是useEvent挂钩:

代码语言:javascript
复制
  const filterData = useEvent(()=>{
    const filteredData = reduxArray.filter(
      () => // do something
);
    store.dispatch(method({reduxArray:[...filteredData]}))
  })

  useEffect(()=>{
    filterData()
 },[data])
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/73733658

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档