在useEffect中反应上下文方法

时间:2020-09-15 22:18:18

标签: reactjs react-hooks context-api

我具有使用以下方法调度操作的上下文:

const AuthContext = createContext();
...

const loadUser = () => {
  try {

    dispatch({ 
      type: types.USER_LOADED, 
      payload: { 
        user: 'some_data'
      }});

  } catch(err) {
    dispatch({ type: types.AUTH_ERROR });
  }
}

然后去减速器

case types.USER_LOADED:
   return {
     ...state,
     user: action.payload.user,
   };

在组件上,我试图在useEffect方法中调用:

const authContext = useContext(AuthContext);

useEffect(() => { 
 
  authContext.loadUser();

}, []);

然后我得到了响应钩子/详尽的下降声:

反应挂钩useEffect缺少依赖项:'authContext'。要么包含它,要么删除依赖项数组react-hooks / exhaustive-deps

我尝试将我的依赖项数组放到authContext上,但遇到了无限循环。 loadUser方法可以按预期工作,但是否可以避免收到此警告?

我也尝试过钩子,但是仍然存在相同的警告,但是在这种情况下,警告会出现在loadUser方法上,但是一切都会按预期进行:

const useAuth = () => {
    const {
        loadUser
    } = useContext(AuthContext);
    
    return {
        loadUser
    };
};

export default useAuth;

然后:

const { loadUser } = useAuth();
useEffect(() => { 
  loadUser(); 
}, []);

0 个答案:

没有答案