Хорошо, я понял это.
Поскольку я использую защищенные маршруты, он перерисовывает весь компонент. Таким образом, даже значения состояния очищаются. Чтобы это исправить, я немного изменил приведенный выше код.
//New protected route
const ProtectedRoute = ({ component: Component, ...rest }) => (
<Route
render={({ location }) => (
<Redirect
to={{
pathname: "/account/login",
state: { from: location },
}}
/>
)}
/>
);
//new Route
return (
<Router>
<Switch>
<Route
exact
path="/"
component={auth.isAuthenticated ? CaseSearchPage : ProtectedRoute}
/>
</Switch>
</Router>
);
Вместо проверки auth.isAuthenticated
внутри ProtectedRoute
, я проверяю это сейчас в Route
. Единственная вещь в ProtectedRoute
- это Redirect
Route.