我收到一个奇怪的警告“React hook useEffect 缺少依赖项”

Posted

技术标签:

【中文标题】我收到一个奇怪的警告“React hook useEffect 缺少依赖项”【英文标题】:I'm getting a weird warning 'React hook useEffect has a missing dependency' 【发布时间】:2021-09-04 23:05:54 【问题描述】:

我在 React 中收到以下警告

'React Hook useEffect 缺少依赖项:'bakerys'。包括它或删除依赖数组。如果“setFlatbakery”需要“bakerys”的当前值,您也可以用 useReducer 替换多个 useState 变量。 (react-hooks/exhaustive-deps)'

bakerysFlatbakery 是反应状态变量。

export default function App() 
  const [bakerys, setBakerys] = useState([]);
  const [flatbakery, setFlatbakery] = useState( 
    header: [],
    data: []
  )

  useEffect(() => 
    // fectchData is function to fecth data from API
    fetchData().then((randomData) => 
      setBakerys(randomData);
      setFlatbakery(extractData(bakerys)) // extractData is a function.
    );
  , []);
return <div className="App"></div>;

【问题讨论】:

我认为警告来自 ESLint,只是忽略了有意为空的 deps: // eslint-disable-next-line react-hooks/exhaustive-deps , []); 【参考方案1】:

您同时设置了两个状态变量。更重要的是,一个更新依赖于另一个。不要那样做。只需将更新分成两个单独的效果:

export default function App() 
  const [bakeries, setBakeries] = useState([]);
  const [flatbakery, setFlatbakery] = useState( 
    header: [],
    data: []
  );

  useEffect(() => 
    fetchData().then((randomData) =>
      setBakeries(randomData);
    );
  , []);

  useEffect(() => 
    setFlatbakery(extractData(bakeries));
  , [bakeries]);

  return <div className="App"></div>;

【讨论】:

以上是关于我收到一个奇怪的警告“React hook useEffect 缺少依赖项”的主要内容,如果未能解决你的问题,请参考以下文章

AdBannerView 未处理错误 -- iAds 错误。添加在模拟器中很好,但给出一个奇怪的警告?

试图在 NSMutableDictionary 中设置 Number 类型的对象并得到奇怪的警告

在启动应用程序之前,世博会发生奇怪的警告火灾

使用自动布局的 IB_DESIGNABLE 自定义视图的错位视图警告和奇怪行为

试图克隆 Repo 但收到这个奇怪的 RSA 消息

指针类型不兼容??奇怪的