react-flex-router v0.1.0
React-Flex-Router
A routing library of React, but more than router.
React-Router is a great product, we learned a lot from it. But we truely faced many problems that React-Router doesn't resolve in real using, especially in mobile APPs.
We did a lot to let React-Flex-Router fit mobile APPs, such as Pages Cache, Scroll Memory.
We create a lot of flexible ways, so you can config the router more simplely.
And more...
Features
Extensible route
You can add route components anywhere,anytime.
const App = ()=> { return ( <HashRouter> <div> <Route lock component={ Home } path="/"/> <Route component={ Products } path="/products"/> </div> </HashRouter> ) } const Products = ()=> { return ( <div> <Route component={ ScienceProducts } path="/sci" /> <Route component={ DailiUseProducts } path="/dai" /> </div> ) } ReactDOM.render(<App/>, document.getElementById('root'))Pages Cache
- Use
locktag to lock a page. - Use
page hookto hold a will-unmount's page when open a new page.
- Use
Memory of scroll position
Remember the scroll positions of every page, for scrolling to same position when back to a page.
Supports loading components dynamicly
Load a component dynamicly when it's route matches.
Supports enter(and leave) filters
Enter filters, filters run before a route mount succeed, such as : login's check.Leave filters, filters run before a route unmount succeed, such as : unsubmited form data.
Pretty flexible
indextag : Index page of a module.misstag : When miss match.locktag : Lock a page for preventing to unmount after it mounted.muiltipletag : For muiltiple matching's need.
<HashRouter> <div> <Route lock component={ Home } path="/"/> <Route component={ Products } path="/products" enterFilter={ loginFilter }> <Route index component={Enterprise} path="/ep"/> <Route miss component={ NotFound }/> <Route component={ Detail } path="/item/:id" time={new Date().toLocaleString()}/> </Route> <Route muiltiple component={ Home } path="/products"> <Route index component={ ProductNav }/> </Route> </div> </HashRouter>Supports rendering in server side
Install
npm install react-flex-router --save-devUsage
App.js
import React, { Component } from 'react'
import ReactDOM from 'react-dom'
import { HashRouter, Route } from 'react-flex-router'
import User from './User'
// other import
class App extends Component {
render(){
return (
<HashRouter>
<div>
<Route lock component={ Home } path="/"/>
<Route component={ Products } path="/products" enterFilter={ loginFilter }>
<Route index component={Enterprise} path="/ep"/>
<Route miss component={ NotFound }/>
<Route component={ Detail } path="/item/:id" time={new Date().toLocaleString()}/>
</Route>
<Route muiltiple component={ User } path="/user"/>
</div>
</HashRouter>
)
}
}
ReactDOM.render(<App/>, document.getElementById('root')) User.js
import React, { Component } from 'react'
import { Link, Route } from 'react-flex-router'
// other import
export default class User extends Component {
render(){
return (
<div>
<ul>
<Link to='/info'>Info</Link>
<Link to='/edit'>Edit</Link>
</ul>
<div>
<Route index component={ UserInfo } path='/info'/>
<Route component={ UserInfoEdit } path='/edit'/>
</div>
</div>
)
}
}9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago
9 years ago