将connect和mapDispatchToProps与功能组件一起使用

时间:2020-08-24 17:31:32

标签: reactjs redux react-redux

我正在尝试Redux。我知道可以从功能组件向商店分发操作,可以使用useDispatch挂钩进行订阅。我正在从useEffect分派操作,并且根据react-redux doc.dispatch可以从依赖列表中省略到useEffect,因为它的身份是稳定的。

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

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

1 个答案:

答案 0 :(得分:1)

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

但是,React“ hook依赖项” lint规则不知道这一点。它知道React的内置挂钩中的函数(useState设置器和useReducer调度函数)始终是稳定的,因此它可以进行特殊情况处理并忽略它们,但是无法知道React -Redux dispatch函数应该稳定。因此,它将始终警告您需要将其添加到效果deps数组中。

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