Stats

 Latest version : 0.1.1

 Last updated on 2018-01-20T15:32:25.914Z

 Keywords : redux, router, react

 Downloads :

  • 190 in Last Month

 Links :

 Examples

¯\_(ツ)_/¯
No examples found for this package

 Readme

Air Traffic Control

License Build Status

Dead simple redux routing, the way it should work. Originally created by @airshanemode and @jfyles with help from the Crossroads routing library for use in Airplane Mode.

Table of Contents

How it works

Air Traffic Control maps route changes in your app to action creators in redux.

Philosophy

Route changes are actions, just like mouse clicks. They should be handled in a consistent way, and they should certainly be kept out of your views.

Installation

$ npm install --save air-traffic-control

Usage

const Router = require('air-traffic-control').Router;

// import your action creators
const ACTION_CREATORS = require('./actions').ACTION_CREATORS;

// import your redux store
const store = require('./store');

// initialize the router
// if you want local links to be automatically fed into the router,
// pass the interceptLinks: true option.
// This means you can write local links with <a href="/foo"> and they'll just work.
const router = new Router(store, { interceptLinks: true }); // TODO: interceptLinks true as default?

// register any routes you want
router.route('/home', () => ACTION_CREATORS.goHome());

// route params are provided as arguments to your handler, they go in {these}
router.route('/search/{query}', (query) => ACTION_CREATORS.search(query));

// if you want more control, you can use regexes in your routes
// matched groups are passed to your handler in order
// this one matches: /trip/chicago-to-vegas/username/2017/09/01/{id}
router.route(/^\/trip\/(?:[-a-zA-Z0-9()']+\/){5}([-a-zA-Z0-9_]+)$/, (id) => ACTION_CREATORS.trip(id));

// you'll probably want a default / 404 handler
router.route(':rest:*', () => ACTION_CREATORS.notFound());

// once you're all set and you want to start routing, call:
router.start();

License

You can check out the full license here

This project is licensed under the terms of the MIT license.

 Comments