react protected routes typescript
/*SM*/
/*example implemented with and FC and Typescript*/
import { Redirect, Route, RouteProps } from 'react-router';
export type ProtectedRouteProps = {
isAuthenticated: boolean;
authenticationPath: string;
} & RouteProps;
export default function ProtectedRoute({isAuthenticated, authenticationPath, ...routeProps}: ProtectedRouteProps) {
if(isAuthenticated) {
return <Route {...routeProps} />;
} else {
return <Redirect to={{ pathname: authenticationPath }} />;
}
};
0
0
import * as React from 'react';
import {
Route,
Redirect,
RouteProps,
RouteComponentProps
} from "react-router-dom";
interface PrivateRouteProps extends RouteProps {
isAuthenticated: boolean;
// Would reccommend this comes from a global state manager
// such as redux, shown using basic props here
}
export class PrivateRoute extends Route<PrivateRouteProps> {
render() {
return (
<Route render={(props: RouteComponentProps) => {
if(!this.props.isAuthenticated) {
return <Redirect to='/login' />
}
if(this.props.component) {
return React.createElement(this.props.component);
}
if(this.props.render) {
return this.props.render(props);
}
}} />
);
}
}
// How To Use Them :::::
<PrivateRoute
path='/dashboard'
component={DashboardPage}
isAuthenticated={props.isAuthenticated}
/>
// OR
<PrivateRoute
path='/checkout'
isAuthenticated={props.isAuthenticated}
render={() => (
<CheckoutPage auth={props.auth} />
)}
/>
Thank you!
0
0
Are there any code examples left?
New code examples in category TypeScript
-
TypeScript 2022-03-27 19:30:45 typescript promise
-
TypeScript 2022-03-27 17:25:44 how to search for imports in vscode
-
TypeScript 2022-03-27 17:15:20 angular formgroup mark as touched
-
TypeScript 2022-03-27 17:05:06 use of slice and splice add elements array
-
TypeScript 2022-03-27 16:50:23 android studio loop through all objects in layout
-
TypeScript 2022-03-27 14:35:08 wergensherts meaning
-
TypeScript 2022-03-27 13:50:15 remove all the elements from a numpy array python
-
TypeScript 2022-03-27 12:35:49 redux toolkit typescript install
-
TypeScript 2022-03-27 12:35:30 laravel middleware for apis