import * as React from 'react' import * as ReactDOM from 'react-dom' import { createStore, combineReducers, applyMiddleware, Reducer } from 'redux' import { Provider } from 'react-redux' import createHistory from 'history/createBrowserHistory' import { Route } from 'react-router' import { ConnectedRouter, routerReducer, routerMiddleware, push, RouterState } from 'react-router-redux' // 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 actions const middleware = routerMiddleware(history) interface State { router: RouterState } // For testing, assume the router reducer is the only sub-reducer: const reducers: Reducer = combineReducers({router: routerReducer}) // Add the reducer to your store on the `router` key // Also apply our middleware for navigating const store = createStore( reducers, applyMiddleware(middleware) ) const Home = () =>
Home
ReactDOM.render( { /* ConnectedRouter will use the store from Provider automatically */ }
, document.getElementById('root') ) // Now you can dispatch navigation actions from anywhere! store.dispatch(push('/foo'))