redux 在useEffect中调用调度?

fbcarpbf  于 2022-11-12  发布在  其他
关注(0)|答案(2)|浏览(144)

目前我只是在useEffect钩子内调用它,而不是将它作为依赖项,因为我只想让它运行一次。然而,这会导致React Hook useEffect has a missing dependency: 'dispatch'.我应该在依赖项中添加调度吗?

useEffect(() => {
    dispatch(handleGetUser());
  }, []);
sg2wtvxw

sg2wtvxw1#

eslint警告并不知道每个函数的作用以及是否会重新创建它,因此它会显示警告以提示用户是否遗漏了某些内容
在这种情况下,您可以安全地禁用警告,并且不将分派作为依赖项包括在内

useEffect(() => {
    dispatch(handleGetUser());

    // eslint-disable-next-line react-hooks/exhaustive-deps
  }, []);

即使您将分派作为依赖项包括在内,您也不会看到副作用,因为分派不会更改,除非公开它的库有bug

ltqd579y

ltqd579y2#

正如@Shubham Khatri所说,在重新渲染之间,调度函数不会改变。
这意味着将其添加到依赖项列表中是安全的,并且它不会使代码重新运行:

useEffect(() => {
    dispatch(handleGetUser());
  }, [dispatch]);

官方的React指南警告不要禁用lint规则,因为它很容易导致微妙的bug。最好以一种让lint满意的方式来编写你的效果(链接的文档给予了更多关于如何在一般情况下这样做的指导)。

相关问题