首页 > 解决方案 > 在依赖项中调度。哪里是真的?我们应该或不应该在反应钩子中添加调度吗?

问题描述

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

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

标签: reactjsredux

解决方案


没有意见,来自 3rd 方库的值应该在 dep array中。

那是因为你不知道它的价值是否持续存在(除非它在文档中提到或者你检查了源代码)。

从依赖项中删除它会给你一个 eslint 警告react-hooks/exhaustive-deps

特定于 Redux 的useDispatch,该值是持久的,因此删除它不会有任何区别。

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

但如前所述,对于其他库可能并非如此,因此将它放在依赖项中是一种额外的安全性,无需与 linter 对抗。


推荐阅读