分派依赖项.哪里是真的?我们应该还是不应该在react钩子中添加分派?



我们应该还是不应该在react钩子的依赖中添加调度?对这件事有确切的看法吗?谁知道真相?有的说是,有的说是

const Component = () => {
const dispatch = useDispatch();
useEffect(() => {
dispatch(someAction());
}, [dispatch]);
return (
<div>
Component
</div>
);
};

如果将分派函数添加到依赖数组中是一个好主意,这取决于您想要达到的目标。如果你想要,你执行useEffect每次你"dispatch"函数更改,那么答案将是yes. 如果您不想跟踪分派函数,那么答案将是no.

一般来说,调度函数根本不会改变,这就是为什么将它添加到依赖数组中没有什么区别。但是有一些库和案例,可能会改变函数赋值,这可能会导致不必要的重新运行useEffect。

没有意见,来自第三方库的值应该在深度数组.

这是因为您无法知道它的值是否持续存在(除非在文档中提到或您检查源代码)。

将它从依赖项中移除会得到eslint警告react-hooks/exhaustive-deps

特定于Redux的useDispatch,该值是持久化的,因此删除它不会产生影响。

注意:像React的useReducer一样,返回的调度函数身份是稳定的,不会在重新渲染时改变。

但如前所述,对于其他库可能不是这样,因此将其放在依赖项中是一种额外的安全性,而无需与过滤器作斗争。

最新更新