react-router-dom-middleware
TypeScript icon, indicating that this package has built-in type declarations

0.1.6 • Public • Published

React Router Dom Middleware · npm package

react-router-dom-middleware : is a library that takes the power of react-router-dom and encapsulates it, to create a more organized and middleware-protected, routing system within your react application.

Install

npm i react-router-dom-middleware

Documentation

In react-router-dom-middleware there is a main router component called <RouterView />. This component is used to render views with middleware.

import { RouterView } from 'react-router-dom-middleware';

To make <RouterView /> work, you must pass an array of routes to the routes property of the component. There is also a suspense property to represent the loading component of views.

If you are coding in typescript import the interface from the routes array.

import { ICollectionRoute } from 'react-router-dom-middleware';

Routes file.

import { HomeView, ContactView } from '../views'; // view component import.

export const routes: ICollectionRoute = [
  {
    path: '/',
    name: 'Home',
    element: <HomeView />,
    children: [], // add child routes here.
    meta: {
      middleware: [isLogged], // add middleware functions here.
    },
  },
  {
    path: '/contact',
    name: 'Contact',
    element: <ContactView />,
    meta: {
      middleware: [], // this view has no protection.
    },
  },
];

Config component <App />.

Your <App /> component configure the <RouterView /> component

import { routes } from './routes';

export function App(): React.ReactElement {
  return <RouterView routes={routes} suspense={<div>Loading...</div>} />;
}

To create a middleware guard on your route, import the interface if you're coding in typescript.

Middleware.

import { IMiddlewareFunction } from 'react-router-dom-middleware';

Then create a midlleware function taking two parameters as input, the first is a to and from object, the second is the next function where you can tell it if it should change the path or continue its course.

export const isLogged: IMiddlewareFunction = ({ to, from }, next) => {
  if (!_auth) next('/login');
  return next();
};

Suggestions

react-router-dom-middleware is ready to use anything from the react-router-dom library. You can use <Link /> simply by importing it.

import { Link } from "react-router-dom-middleware";

This is the folder structure we suggest using:

/src
  /middleware
    index.ts ----------- # add route protection functions.
  /routes
    index.tsx ---------- # add the routes array.
  /views
    index.tsx
    home.tsx
    contact.tsx
  app.tsx -------------- # use the <RouterView /> component

So you can export the components of the views.

import React, { lazy, LazyExoticComponent } from "react";

const HomeView: LazyExoticComponent<React.ComponentType<any>> = lazy(
  () => import("./home")
);
const ContactView: LazyExoticComponent<React.ComponentType<any>> = lazy(
  () => import("./contact")
);

export { HomeView, ContactView };

License

MIT

Readme

Keywords

none

Package Sidebar

Install

npm i react-router-dom-middleware

Weekly Downloads

8

Version

0.1.6

License

MIT

Unpacked Size

54.3 kB

Total Files

32

Last publish

Collaborators

  • gian.vespa