Отключить от компонента для визуализации при переходе из перенаправления - PullRequest
0 голосов
/ 17 марта 2020

У меня есть компонент login , который использует избыточность в качестве управления состоянием. Каждый раз, когда компонент отображается, я возвращаю исходное состояние. У меня есть проблема, когда я перенаправляю на эту страницу входа с некоторым statusCode , я хотел бы отобразить это сообщение об ошибке внутри компонента login и не сбрасывать состояние. Как можно избежать повторного рендеринга компонента после его перенаправления (маршрутизации)? Я использую промежуточное программное обеспечение для определения statusCode и действую соответственно -> например:

Промежуточное программное обеспечение:

  if (action.type === SUCCESS_LOGOUT) {
    console.log("we are here - Middleware -> SUCCESS_LOGOUT");
    clearAuthorization();
    resetClient();
    dispatch(licenseExpired(action.statusCode));
  }

Действия:

const licenseExpired = statusCode => async dispatch => {
  console.log("we are in actions License");
  console.log("TOTO " + statusCode);
  try {
     dispatch(errorReset(statusCode));
  } catch (e) {
     dispatch(failedLogout(e));
  }
};

Редуктор:

 [ERROR_RESET]: (state, { statusCode }) => {
   return {
     ...state,
     statusCode: statusCode === 402 ? statusCode : '',
  };
 }

Перенаправление:

const shouldRedirect = WrappedComponent => props => {
const { redirect, url } = props;
 return redirect ? <Redirect to={url} /> : <WrappedComponent 
 {...props} 
 />;
};

Компонент - настраиваемый крючок:

const Login = ({ onLogin, isLoading, statusCode, errorReset }) => {
const errorResetMessage = useCallback(() => errorReset(),
  [statusCode]);

useEffect(() => {
return () => errorResetMessage();
}, [errorResetMessage]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...