0

我有一个注销用户的 thunk 操作

在注销 thunk 动作中,我有这个: dispatch(push('/login'));

我想用“刷新”重定向用户以注销以刷新页面和。“清理”国家

另外,我想清理 redux 商店,而不是它不干净

import { push } from 'connected-react-router';


export function logout() {
  return async (dispatch: any, state: State, services: Services) => {
    try {
        await services.auth.logout();
    } catch (e) {
      services.logger.error(e);
    } finally {
      dispatch({ type: AUTH_LOGOUT });
      dispatch(push('/login'));
    }
  };
}

当我点击组件中的按钮时

const Logout = () => {
  const dispatch = useDispatch();

  React.useEffect(() => {
    dispatch(logout());
  }, [dispatch]);

  return null;
};

减速器

   case AUTH_LOGOUT: {
        draft.authenticated = false;
        draft.currentUser = {} ;
        return draft;
      }

4

3 回答 3

1

然后你可以简单地做window.location.href = '/login';

于 2020-06-24T04:41:13.757 回答
0

您可以使用 javascript 的 window 对象进行刷新。 e.g., window.location.href = "router_address"

于 2020-06-24T05:40:50.213 回答
0

当您更改状态时,React 会自动重新加载。所以你需要改变一个状态。例如,您使用的登录/注销标志或授权标志。从您的代码中,您需要在减速器中为 AUTH_LOGOUT 定义案例的位置进行更改。

于 2020-06-24T04:41:19.457 回答