Skip to content Skip to sidebar Skip to footer

Having Issues Trying To Re-direct User Based On State , Using React-router

my app component redirects a used based if they are logged in = true, I used an online example after trying various methods, if there is a more simple functional react way to do it

Solution 1:

I did it by below code -

importReact, { Component } from'react';
import { BrowserRouter, Route, Switch, Redirect } from'react-router-dom';
import { baseURL } from'./components/action';
import'./App.css';
importTopNavBarfrom'./components/TopNavBar';
importSideNavBarfrom'./components/sideNavBar';
importFooterfrom'./components/footer';
importDashBoardfrom'./components/dashBoard';
importMediafrom'./components/media';
importLoginfrom'./components/Login';
importRegistrationfrom'./components/Registration';
importChangePasswordfrom'./components/changePassword';
importForgotPasswordfrom'./components/forgotPassword';
importMyProfilefrom'./components/myProfile';
importPageNotFoundfrom'./components/pageNotFound';

classAppextendsComponent {
  render() {
    if (
      localStorage.getItem('token') !== undefined &&
      localStorage.getItem('token') !== '' &&
      localStorage.getItem('token') !== null
    ) {
      var token = localStorage.getItem('token');
    }

    const defaultparams = { params: { p1: '', p2: '' } };

    return (
      <BrowserRouterbasename={baseURL}><div>
          {token ? <TopNavBar /> : ''}
          {token ? <SideNavBar /> : ''}
          <divclassName="page_content"><Switch><Routepath="/"exactrender={() => {
                  return token ? (
                    <DashBoard />
                  ) : (
                    <Loginmatch={defaultparams} />
                  );
                }}
              />
              <Routepath="/dashboard"render={() => {
                  return token ? <DashBoard /> : <Redirectto="/login" />;
                }}
              />
              <Routepath="/media"render={() => {
                  return token ? <Media /> : <Redirectto="/login" />;
                }}
              />
              <Routepath="/login/:p1?/:p2?"component={Login} /><Routepath="/signup"render={() => {
                  return token ? (
                    <Redirectto="/dashboard" />
                  ) : (
                    <Registration />
                  );
                }}
              />
              <Routepath="/forgotpassword"render={() => {
                  return token ? (
                    <Redirectto="/dashboard" />
                  ) : (
                    <ForgotPassword />
                  );
                }}
              />
              <Routepath="/changepassword"render={() => {
                  return token ? <ChangePassword /> : <Redirectto="/login" />;
                }}
              />
              <Routepath="/myprofile"render={() => {
                  return token ? <MyProfile /> : <Redirectto="/login" />;
                }}
              />
              <Routepath=""component={PageNotFound} /></Switch></div><Footer /></div></BrowserRouter>
    );
  }
}

exportdefaultApp;

You need to check token. If exists then load the component otherwise redirect the user.

Post a Comment for "Having Issues Trying To Re-direct User Based On State , Using React-router"