react-router-redux
Keep your state in sync with your router :sparkles:
这是一个测试版软件, 它需要:
- 一个工作实例
- Some people to try it out and find bugs
- A strategy for working with the devtools
- (issue describing a different approach to what we’ve seen previously coming soon)
Installation
npm install --save react-router-redux@next
Usage
Here’s a basic idea of how it works:
import React from 'react'import ReactDOM from 'react-dom'import { createStore, combineReducers, applyMiddleware } from 'redux'import { Provider } from 'react-redux'import createHistory from 'history/createBrowserHistory'import { Route } from 'react-router'import { ConnectedRouter, routerReducer, routerMiddleware, push } from 'react-router-redux'import reducers from './reducers' // Or wherever you keep your reducers// Create a history of your choosing (we're using a browser history in this case)const history = createHistory()// Build the middleware for intercepting and dispatching navigation actionsconst middleware = routerMiddleware(history)// Add the reducer to your store on the `router` key// Also apply our middleware for navigatingconst store = createStore(combineReducers({...reducers,router: routerReducer}),applyMiddleware(middleware))// Now you can dispatch navigation actions from anywhere!// store.dispatch(push('/foo'))ReactDOM.render(<Provider store={store}>{ /* ConnectedRouter will use the store from Provider automatically */ }<ConnectedRouter history={history}><div><Route exact path="/" component={Home}/><Route path="/about" component={About}/><Route path="/topics" component={Topics}/></div></ConnectedRouter></Provider>,document.getElementById('root'))
