import React from "react";
import { Route, Redirect, Switch } from "react-router-dom";
import { useOktaAuth } from "@okta/okta-react";
import { Superadmin } from "../../../../Application_Constants";
import { AuthPage } from "./AuthPage";
import { ErrorPage1 } from "../../errors/ErrorPage1";
import { makeStyles, useTheme } from "@material-ui/core/";
import { Provider } from "react-redux";
import { createStore, applyMiddleware } from "redux";
import thunk from "redux-thunk";
import reducer from "../../redux/reducer";
import Header from "../../header/Header";
const AppWithRouterAccess = () => {
const store = createStore(reducer, applyMiddleware(thunk));
const theme = useTheme();
const { authState, oktaAuth } = useOktaAuth();
return (
<Switch>
{!authState.isAuthenticated ? (
/*Render auth page when user at `/auth` and not authorized.*/
<Route>
<AuthPage />
</Route>
) : (
/*Otherwise redirect to root page (`/`)*/
<Redirect from="/auth" to="/" />
)}
<Route path="/error" component={ErrorPage1} />
{!authState.isAuthenticated ? (
/*Redirect to `/auth` when user is not authorized*/
<Redirect to="/auth/login" />
) : (
<>
{/* provider used to integrates redux store with react application */}
{/* redux provides a centralized store to manage the state of application */}
<Provider store={store}>
<Header />
</Provider>
</>
)}
</Switch>
);
};
export default AppWithRouterAccess;
This is AppWithRouterAccess.js file. authState.isAuthenticated is getting refresh because Okta token refreshes and my page is getting refreshed and store refreshes. How can I stop my Redux to get refreshed after authState.isAuthenticated updates. Redux store should not get updated.
The
storeis recreated each timeAppWithRouterAccessrenders for any reason. Create thestoreoutside the component so it's instantiated only once.