1.2.2 • Published 3 years ago

@sswahn/router v1.2.2

Weekly downloads
-
License
MIT
Repository
github
Last release
3 years ago

Router · License npm version Weekly Downloads GitHub stars

A lightweight and flexible routing solution. Router simplifies the process of implementing client-side routing in React applications, making it easier to manage different views and navigate between them while maintaining a component-based approach.

Features

  • Component-Based Routing: The library is designed to work with React's component-based architecture, allowing you to define routes using individual components.
  • "Not Found" Handling: The library provides a built-in mechanism to handle "Not Found" scenarios when no matching route is found. This is typically achieved by using a component without a path prop.
  • Programmatic Navigation: It supports programmatic navigation through a navigateTo function, enabling you to navigate to specific routes in your application.
  • Dynamic Component Resolution: Use function-based components to dynamically resolve which component to render based on conditions specific to each route.
  • Asynchronous Loading: The library supports lazy loading of components through React's Suspense mechanism, allowing for a smoother user experience.
  • Dynamic Parameters: Define dynamic parameters in your route paths to intelligently match and capture values for these parameters.
  • Simple and Efficient: The routing logic is implemented with simplicity and efficiency in mind, allowing for a clean and straightforward routing solution.
  • Customization: The library is flexible and can be customized to fit the specific needs of your application.

Installation

npm install @sswahn/router

Usage

Import the router component.

import { Router, Route } from '@sswahn/router'

Routing

Define your routes' paths and their associated components.

import Home from './components/Home'
import About from './components/About'
import Contact from './components/Contact'
import NotFound from './components/NotFound'

<Router>
  <Route path="/" component={Home} />
  <Route path="/about" component={About} />
  <Route path="/contact" component={Contact} />
  <Route component={NotFound}
</Router>

Lazy Loading

To lazy load a component provide a lazyFallback component.

<Router lazyFallback={CustomLoadingSpinner}>
  <Route path="/" component={Home} />
  ...
</Router>

Dynamic Parameters

The Route component supports dynamic parameters in route paths.

<Route path="/profile/{username}" component={UserProfile} />

Programmatic Navigation

Navigate to a route's path with navigateTo.

import { navigateTo } from '@sswahn/router'
...
const handleOnClick = event => {
  navigateTo('/about')
}

Dynamic Component Resolution

Use a function to return a component.

<Route path="/dashboard" component={() => {
  if (userIsAuthenticated) {
    return <AuthenticatedDashboard />
  } else {
    return <PublicDashboard />
  }
}} />

Peer Dependencies

Router requires React as a peer dependency. You should have React installed in your project with a version compatible with this library.

License

Router is MIT Licensed

1.2.2

3 years ago

1.2.1

3 years ago

1.2.0

3 years ago

1.1.15

3 years ago

1.1.14

3 years ago

1.1.13

3 years ago

1.1.12

3 years ago

1.1.11

3 years ago

1.1.10

3 years ago

1.1.9

3 years ago

1.1.8

3 years ago

1.1.7

3 years ago

1.1.6

3 years ago

1.1.5

3 years ago

1.1.4

3 years ago

1.1.3

3 years ago

1.1.2

3 years ago

1.1.1

3 years ago

1.1.0

3 years ago

1.0.1

3 years ago

1.0.0

3 years ago

1.0.0-beta.37

3 years ago

1.0.0-beta.36

3 years ago

1.0.0-beta.35

3 years ago

1.0.0-beta.34

3 years ago

1.0.0-beta.33

3 years ago

1.0.0-beta.32

3 years ago

1.0.0-beta.31

3 years ago

1.0.0-beta.30

3 years ago

1.0.0-beta.29

3 years ago

1.0.0-beta.28

3 years ago

1.0.0-beta.27

3 years ago

1.0.0-beta.26

3 years ago

1.0.0-beta.25

3 years ago

1.0.0-beta.24

3 years ago

1.0.0-beta.23

3 years ago

1.0.0-beta.22

3 years ago

1.0.0-beta.21

3 years ago

1.0.0-beta.20

3 years ago

1.0.0-beta.19

3 years ago

1.0.0-beta.18

3 years ago

1.0.0-beta.17

3 years ago

1.0.0-beta.16

3 years ago

1.0.0-beta.15

3 years ago

1.0.0-beta.14

3 years ago

1.0.0-beta.13

3 years ago

1.0.0-beta.12

3 years ago

1.0.0-beta.11

3 years ago

1.0.0-beta.10

3 years ago

1.0.0-beta.9

3 years ago

1.0.0-beta.8

3 years ago

1.0.0-beta.7

3 years ago

1.0.0-beta.6

3 years ago

1.0.0-beta.5

3 years ago

1.0.0-beta.4

3 years ago

1.0.0-beta.3

3 years ago

1.0.0-beta.2

3 years ago

1.0.0-beta.1

3 years ago

1.0.0-beta.0

3 years ago