我正在尝试Redux。我知道可以从功能组件向商店分发操作,可以使用useDispatch
挂钩进行订阅。我正在从useEffect
分派操作,并且根据react-redux doc.,dispatch
可以从依赖列表中省略到useEffect
,因为它的身份是稳定的。
const TriviaCategories = () => {
const dispatch = useDispatch();
useEffect(() => {
dispatch({ type: "SET_CATEGORIES", triviaCategories });
}, []);
return null;
};
如果我决定使用connect
来订阅商店,那么dispatch
函数身份是否仍然像useDispatch
钩子一样稳定?
答案 0 :(得分:1)
dispatch
函数将始终保持稳定,只要您继续将相同的Redux存储实例传递给<Provider store={store}>
,因为dispatch
就是store.dispatch
。>
但是,React“ hook依赖项” lint规则不知道这一点。它知道React的内置挂钩中的函数(useState
设置器和useReducer
调度函数)始终是稳定的,因此它可以进行特殊情况处理并忽略它们,但是无法知道React -Redux dispatch
函数应该稳定。因此,它将始终警告您需要将其添加到效果deps数组中。
因此,您最好总是将其添加到deps数组中。