欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页  >  移动技术

2021-01-13

程序员文章站 2022-06-19 15:07:30
React hook报错 React Hook useEffect has missing dependencies解决方案最近在开发某后台管理系统时使用ESlint来校验写法问题,结果太感人了,几乎所有页面初始化使用useEffect调用接口时都被提示了:大致意思就是缺少useEffect的依赖,这就让我很头疼了,明明官方说可以直接使用一个空数组来执行默认只执行一次,为什么到了ESlint就不行了呢?翻阅了一些文档,大致的意思就是如果你的副作用没有使用任何依赖,只是单纯的做没有赋值或者调用接口的操作...

React hook报错 React Hook useEffect has missing dependencies解决方案

最近在开发某后台管理系统时使用ESlint来校验写法问题,结果太感人了,几乎所有页面初始化使用useEffect调用接口时都被提示了:
2021-01-13
大致意思就是缺少useEffect的依赖,这就让我很头疼了,明明官方说可以直接使用一个空数组来执行默认只执行一次,为什么到了ESlint就不行了呢?翻阅了一些文档,大致的意思就是如果你的副作用没有使用任何依赖,只是单纯的做没有赋值或者调用接口的操作,可以使用空数组,但是如果你的副作用直接或者间接使用了外部的变量,那么你就需要给useEffect的第二个参数传入依赖值,这样可以减少错误的发生,保证数据每次更新时都能获取到。

那么我们究竟如何解决这类问题呢,我个人方案是使用useCallback,至于用法这里就不啰嗦了,可以查阅各种文档。
首先我们可以把需要操作的副作用传入一个useCallback中:
2021-01-13
这里我是通过dispatch调用一个后台接口,由于params属于参数,在usecallback内部,所以不属于依赖项。
但是这里的dispatch是实实在在的从props中取到的也就是在useCallback外部拿到的,所以成为一个依赖项。
最终getCusList函数会获取到useCallback的返回函数,然后我们把getCusList函数在写在useEffect方法中:
2021-01-13
并且把本身作为一个依赖项传入第二个参数,这样就可以解决直接在useEffect中调用接口导致的缺少依赖问题。

当然这里存在一个情况,如果你的初始化方法并没有在其他地方被调用,那么你就可以直接在useEffect中使用这个方法而不需要使用useCallback属性,如:
2021-01-13
如有疑问或者解释不对的地方,请各位大佬们在下面告知

本文地址:https://blog.csdn.net/qq_26732261/article/details/112565590

相关标签: javascript React