目前我只是在useEffect钩子内调用它,而不是将它作为依赖项,因为我只想让它运行一次。然而,这会导致React Hook useEffect has a missing dependency: 'dispatch'.我应该在依赖项中添加调度吗?
React Hook useEffect has a missing dependency: 'dispatch'.
useEffect(() => { dispatch(handleGetUser()); }, []);
sg2wtvxw1#
eslint警告并不知道每个函数的作用以及是否会重新创建它,因此它会显示警告以提示用户是否遗漏了某些内容在这种情况下,您可以安全地禁用警告,并且不将分派作为依赖项包括在内
useEffect(() => { dispatch(handleGetUser()); // eslint-disable-next-line react-hooks/exhaustive-deps }, []);
即使您将分派作为依赖项包括在内,您也不会看到副作用,因为分派不会更改,除非公开它的库有bug
ltqd579y2#
正如@Shubham Khatri所说,在重新渲染之间,调度函数不会改变。这意味着将其添加到依赖项列表中是安全的,并且它不会使代码重新运行:
useEffect(() => { dispatch(handleGetUser()); }, [dispatch]);
官方的React指南警告不要禁用lint规则,因为它很容易导致微妙的bug。最好以一种让lint满意的方式来编写你的效果(链接的文档给予了更多关于如何在一般情况下这样做的指导)。
2条答案
按热度按时间sg2wtvxw1#
eslint警告并不知道每个函数的作用以及是否会重新创建它,因此它会显示警告以提示用户是否遗漏了某些内容
在这种情况下,您可以安全地禁用警告,并且不将分派作为依赖项包括在内
即使您将分派作为依赖项包括在内,您也不会看到副作用,因为分派不会更改,除非公开它的库有bug
ltqd579y2#
正如@Shubham Khatri所说,在重新渲染之间,调度函数不会改变。
这意味着将其添加到依赖项列表中是安全的,并且它不会使代码重新运行:
官方的React指南警告不要禁用lint规则,因为它很容易导致微妙的bug。最好以一种让lint满意的方式来编写你的效果(链接的文档给予了更多关于如何在一般情况下这样做的指导)。