Detalhes do pacote

react-easy-router

yousufkalim35.3mMIT2.2.0

The simplest way to add routing to your React app

react, routing, router, react-router

readme (leia-me)

We are the first generation to feel the sting of climate change, and we are the last generation that can do something about it. Save our planet 🪴

React Easy Router

  • Built on top of react-router-dom
  • The simplest way to add routing to your React app
  • Pass a JS object to the library, and it will handle all the routing

Prerequisites

  • react-router-dom@6.4.0 or later must be installed in your project
  • Application must be wrapped in a BrowserRouter component

Installation

Install react-easy-router with npm/yarn

  npm install react-easy-router // npm
  yarn add react-easy-router // yarn

Examples

Routes array

const routes = [
  {
    path: '/',
    navigate: '/login',
  },
  {
    path: '/login',
    element: <Login />,
  },
  {
    path: '/admins',
    element: <Admins />,
    children: [{ path: '/admin', element: <Admin /> }],
  },
  {
    path: '/users',
    element: <Users />,
    children: [{ path: '/user', element: <User /> }],
  },
  {
    path: '*',
    element: <NotFound />,
  },
];

Dynamic routing

{
  path: '/users/:id',
  element: <User />,
}

Navigation and redirecting

{
  path: '/home',
  navigate: '/blog',
}

Protected routes

{
  path: '/admin',
  element: <Admin />,
  protected: true,
  roles: ["admin", 'manager'], // Optional: Role specific screen
  failureRedirect: '/admin/login', // Optional: Default is '/'
}

Nested routing

{
  path: '/users',
  element: <Users />,
  children: [
    {
      path: '/:id',
      element: <User />,
    },
  ],
}

Usage

Here's an example of basic usage

// src/App.js
import Router from 'react-easy-router';

function App() {
  const routes = [...routes];

  return <Router routes={routes} />;
}

Protect with authentication function

// src/App.js
import Router from 'react-easy-router';

function App() {
  const routes = [...routes];

  // Function can resolve/reject or return true/false
  const checkAuth = () => {
    const token = localStorage.getItem('token');

    if (token) {
      return { success: true, role: 'admin' };
    } else {
      return false;
    }
  };

  return <Router routes={routes} isAuthenticated={checkAuth} />;
}

Props

Router

Prop Type Description
routes Array Array of routes
isAuthenticated Function Function to check if user is authenticated
showLoader Boolean Option to disable the loading screen
loader Gif/Svg Custom loader element

Contributing

  • Fork it!
  • Create your feature branch: git checkout -b my-new-feature
  • Commit your changes: git commit -am 'Add some feature'
  • Push to the branch: git push origin my-new-feature
  • Submit a pull request :D

Author

Yousuf Kalim
yousufkalim@outlook.com
https://yousufkalim.com
Authored and maintained by Yousuf Kalim.

GitHub @yousufkalim · LinkedIn @yousufkalim

License

MIT

changelog (log de mudanças)

CHANGELOG

All notable changes to this project will be documented in this file.

Tags

  • Features
  • Bug Fixes
  • Performance Improvements
  • Enhancements
  • Dependency Updates
  • Breaking Changes
  • Documentation
  • Internal
  • Unreleased

v2.2.0

Features

  • Added support to check auth on multiple roles

v2.1.2

Enhancements

  • Types structure improved
  • Export types from index.ts file

v2.1.1

Bug Fixes

  • Bug fixes where all the props are required
  • Improve validations

v2.1.0

Enhancements

  • Convert the whole architecture to Typescript
  • Update Eslint rules

v2.0.6

Documentation

  • Add prerequisites to README.md

v2.0.5

Bug Fixes

  • Remove BrowserRouter usage
  • Added react-router-dom as a peer-dependency

v2.0.4

Documentation

  • Comment Added
  • JSDoc Added

v2.0.3

Documentation

  • Update README.md
  • Add public awareness to README.md

v2.0.2

Dependency Updates

  • React support for react@^16.8.0 and later
  • React-DOM support for react-dom@^16.8.0 and later
  • Added react-router-dom to dependencies

v2.0.1

Documentation

  • Update README.md

v2.0.0

Features

  • Initial Release