github

taion / rrtr

  • среда, 13 апреля 2016 г. в 03:11:32
https://github.com/taion/rrtr

JavaScript
A complete routing solution for React.js



rrtr Travis npm package

rrtr is a complete routing library for React.

rrtr keeps your UI in sync with the URL. It has a simple API with powerful features like lazy code loading, dynamic route matching, and location transition handling built right in. Make the URL your first thought, not an after-thought.

Coveralls Discord

rrtr? It's an actively-maintained fork of React Router. More details here.

Docs & Help

For questions and support, please visit our channel on Reactiflux or Stack Overflow.

Browser Support

We support all browsers and environments where React runs.

Installation

Using npm:

$ npm install --save rrtr

Then with a module bundler like webpack that supports either CommonJS or ES2015 modules, use as you would anything else:

// using an ES6 transpiler, like babel
import { Router, Route, Link } from 'rrtr'

// not using an ES6 transpiler
var Router = require('rrtr').Router
var Route = require('rrtr').Route
var Link = require('rrtr').Link

The UMD build is also available on npmcdn:

<script src="https://npmcdn.com/rrtr/umd/ReactRouter.min.js"></script>

You can find the library on window.ReactRouter.

What's it look like?

import React from 'react'
import { render } from 'react-dom'
import { Router, Route, Link, browserHistory } from 'rrtr'

const App = React.createClass({/*...*/})
const About = React.createClass({/*...*/})
// etc.

const Users = React.createClass({
  render() {
    return (
      <div>
        <h1>Users</h1>
        <div className="master">
          <ul>
            {/* use Link to route around the app */}
            {this.state.users.map(user => (
              <li key={user.id}><Link to={`/user/${user.id}`}>{user.name}</Link></li>
            ))}
          </ul>
        </div>
        <div className="detail">
          {this.props.children}
        </div>
      </div>
    )
  }
})

const User = React.createClass({
  componentDidMount() {
    this.setState({
      // route components are rendered with useful information, like URL params
      user: findUserById(this.props.params.userId)
    })
  },

  render() {
    return (
      <div>
        <h2>{this.state.user.name}</h2>
        {/* etc. */}
      </div>
    )
  }
})

// Declarative route configuration (could also load this config lazily
// instead, all you really need is a single root route, you don't need to
// colocate the entire config).
render((
  <Router history={browserHistory}>
    <Route path="/" component={App}>
      <Route path="about" component={About}/>
      <Route path="users" component={Users}>
        <Route path="/user/:userId" component={User}/>
      </Route>
      <Route path="*" component={NoMatch}/>
    </Route>
  </Router>
), document.body)

See more in the Introduction, Guides, and Examples.

Versioning and Stability

We want rrtr to be a stable dependency that’s easy to keep current. We follow the same versioning as React.js itself: React Versioning Scheme.

Thanks

Thanks to our sponsors for supporting the development of React Router.

React Router was initially inspired by Ember's fantastic router. Many thanks to the Ember team.