React hooks exhaustive-deps 规则也需要 useEffect 数组中的函数

Posted

技术标签:

【中文标题】React hooks exhaustive-deps 规则也需要 useEffect 数组中的函数【英文标题】:React hooks exhaustive-deps rule also requires functions in useEffect array 【发布时间】:2019-09-29 11:30:04 【问题描述】:

所以我有以下效果

  useEffect(() => 
    if (disabled) 
      setAnimatedValue(0);
     else 
      setAnimatedValue(1);
    
  , [disabled]);

如果disabled 属性发生变化,这只是将按钮设置为启用或禁用状态。

我还在我的 eslint 配置中添加了以下规则

  'react-hooks/exhaustive-deps': 'warn',

现在我收到一个警告,需要将setAnimatedValuedisabled 属性一起添加到我的useEffect 数组中,但这只是一个既不是状态也不是道具的函数,所以它不应该真的据我了解,进去吧。

有没有办法让这条规则只在我缺少stateprop 值时发出警告?

【问题讨论】:

我想除了无视规则外,你无能为力。在 repo 中打开一个问题。 这对我来说是规则中最烦人的事情——大多数时候它很有帮助。但不应包含函数。 【参考方案1】:

如果您的 setAnimation 函数不依赖于外部状态或道具,那么省略是安全的。

即。如果 setAnimation 唯一需要执行其效果的是传递给它的 0/1 值 - 那么它可以安全地省略。

它可能是一个 setter 函数,所以你很安全。

https://reactjs.org/docs/hooks-faq.html#is-it-safe-to-omit-functions-from-the-list-of-dependencies

【讨论】:

以上是关于React hooks exhaustive-deps 规则也需要 useEffect 数组中的函数的主要内容,如果未能解决你的问题,请参考以下文章

React Hook - Hook规则

react hook介绍

react hook介绍

react自定义hooks-自动改变页面的title,Http请求hooks等..(持续更新)

[react] 使用Hooks要遵守哪些原则?

react新特性 react hooks