【问题标题】:Using connect and mapDispatchToProps with functional components将 connect 和 mapDispatchToProps 与功能组件一起使用
【发布时间】:2020-12-13 09:12:18
【问题描述】:

我正在尝试使用 Redux。我了解从功能组件向商店发送操作,可以使用useDispatch 钩子订阅。我正在从useEffect 调度操作,根据react-redux doc.dispatch 可以从依赖关系列表中省略到useEffect,因为它的身份是稳定的。

  const TriviaCategories = () => {
  const dispatch = useDispatch();
  useEffect(() => {
    dispatch({ type: "SET_CATEGORIES", triviaCategories });
  }, []);
  return null;
};

如果我决定使用connect 订阅商店,dispatch 函数身份是否仍然像useDispatch 挂钩一样稳定?

【问题讨论】:

  • 当使用connect HOC 并将调度映射到您的动作创建者时,动作创建者被包装在调度调用中,因此实际上不需要直接访问dispatch 属性。

标签: reactjs redux react-redux


【解决方案1】:

只要您继续将相同的 Redux 存储实例传递给您的 <Provider store={store}>dispatch 函数将始终保持稳定,因为 dispatch 只是 store.dispatch

然而,React 的“钩子依赖” lint 规则不知道这一点。它知道来自 React 的内置钩子(useState setter 和 useReducer dispatch 函数)的函数总是稳定的,所以它可以特殊情况并忽略这些,但它无法知道 React-Redux @987654327 @函数应该是稳定的。所以,它会一直警告你需要将它添加到 effect deps 数组中。

因此,您不妨总是将其添加到 deps 数组中。

【讨论】:

    猜你喜欢
    • 2017-01-16
    • 2020-09-10
    • 2020-07-07
    • 2020-11-29
    • 2021-04-04
    • 1970-01-01
    • 2021-12-25
    • 2016-12-28
    • 1970-01-01
    相关资源
    最近更新 更多