У меня есть компонент 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]);