react redux - 如何重新加载页面而不是 "push"

react redux - how to reload the page instead of "push"

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

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

我想使用“刷新”将用户重定向到注销以刷新页面和。 “清洁”州

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

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;
      }

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

当您更改状态时,React 会自动重新加载。所以你需要改变一个状态。例如,您使用的 login/logout 标志或授权标志。 在你的代码中,你需要在你的减速器中为 AUTH_LOGOUT 定义案例的地方更改它。

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