【发布时间】:2020-02-25 16:23:48
【问题描述】:
这是我第一次使用 react js,我试图在离开这个视图时删除警报,因为我不想在另一个视图上显示它,但如果没有错误,我想保持成功当我要重定向到另一个视图时提醒显示它
但我在谷歌浏览器上穿了这个
Line 97:6: React Hook useEffect has a missing dependency: 'dispatch'. Either include it or remove the dependency array react-hooks/exhaustive-deps
如果我确实包含调度,我会得到无限循环
const [state, dispatch] = useUserStore();
useEffect(() => {
let token = params.params.token;
checktoken(token, dispatch);
}, [params.params.token]);
useEffect(() => {
return () => {
if (state.alert.msg === "Error") {
dispatch({
type: REMOVE_ALERT
});
}
};
}, [state.alert.msg]);
//response from the api
if (!token_valide || token_valide_message === "done") {
return <Redirect to="/login" />;
}
这是 useUserStore
const globalReducers = useCombinedReducers({
alert: useReducer(alertReducer, alertInitState),
auth: useReducer(authReducer, authInitState),
register: useReducer(registerReducer, registerInitState),
token: useReducer(passeditReducer, tokenvalidationInitState)
});
return (
<appStore.Provider value={globalReducers}>{children}</appStore.Provider>
);
};
export const useUserStore = () => useContext(appStore);
【问题讨论】:
-
什么是
useUserStore? -
@Dupocas Op 已经尝试过了,但随后陷入无限循环。
-
更新了答案。将其包装在
useCallback中并将此包装后的版本传递给您的效果 -
现在我们要问什么是useCombineRecurs。
-
useCombineRecurs 是一个类似于 redux 中的 CombineReducers 的库
标签: reactjs react-hooks