redux 将“dispatch”函数作为依赖项插入useEffect函数是否安全?

eni9jsuy  于 2023-01-26  发布在  其他
关注(0)|答案(1)|浏览(298)

如果我用这个

useEffect(() => {
dispatch(fetchToDos())}, [debouncedToDo, loginInfo.isLogin])

我收到警告
React Hook useEffect缺少依赖项:“dispatch”。请包含它或移除依赖项数组react-hooks/exhautive-deps
如果我在依赖项数组中包含“dispatch”,警告就消失了。
就像这样:

useEffect(() => {
dispatch(fetchToDos())}, [dispatch, debouncedToDo, loginInfo.isLogin])
uz75evzq

uz75evzq1#

是的,dispatch可以安全地添加到useEffect钩子的依赖项数组中。
从文件上看

    • 信息**

只要相同的存储示例被传递到<Provider>dispatch函数引用就将是稳定的。通常,该存储示例在应用程序中永远不会更改。
然而,React钩子lint规则不知道dispatch应该是稳定的,并且会警告dispatch变量应该被添加到useEffectuseCallback的依赖关系数组中。

export const Todos() = () => {
  const dispatch = useDispatch();

  useEffect(() => {
    dispatch(fetchTodos())
  // Safe to add dispatch to the dependencies array
  }, [dispatch])
}

相关问题