forgeplus-react/node_modules/connected-react-router
zhiyuanliu cb17bad1d4 activity visualize step one 2023-07-29 06:19:10 -07:00
..
lib activity visualize step one 2023-07-29 06:19:10 -07:00
node_modules/immutable activity visualize step one 2023-07-29 06:19:10 -07:00
umd activity visualize step one 2023-07-29 06:19:10 -07:00
ACKNOWLEDGE.md activity visualize step one 2023-07-29 06:19:10 -07:00
FAQ.md activity visualize step one 2023-07-29 06:19:10 -07:00
LICENSE.md activity visualize step one 2023-07-29 06:19:10 -07:00
README.md activity visualize step one 2023-07-29 06:19:10 -07:00
immutable.js activity visualize step one 2023-07-29 06:19:10 -07:00
index.d.ts activity visualize step one 2023-07-29 06:19:10 -07:00
package.json activity visualize step one 2023-07-29 06:19:10 -07:00
webpack.config.js activity visualize step one 2023-07-29 06:19:10 -07:00

README.md

Connected React Router Build Status Open Source Helpers

A Redux binding for React Router v4

Main features

Synchronize router state with redux store through uni-directional flow (i.e. history -> store -> router -> components).

🎁 Support React Router v4.

☀️ Support functional component hot reloading while preserving state (with react-hot-reload).

🎉 Dispatching of history methods (push, replace, go, goBack, goForward) works for both redux-thunk and redux-saga.

Nested children can access routing state such as the current location directly with react-redux's connect.

🕘 Support time traveling in Redux DevTools.

💎 Support Immutable.js

💪 Support TypeScript

Installation

Using npm:

$ npm install --save connected-react-router

Or yarn:

$ yarn add connected-react-router

Usage

Step 1

  • Create a history object.
  • Wrap the root reducer with connectRouter and supply the history object to get a new root reducer.
  • Use routerMiddleware(history) if you want to dispatch history actions (e.g. to change URL with push('/path/to/somewhere')).
...
import { createBrowserHistory } from 'history'
import { applyMiddleware, compose, createStore } from 'redux'
import { connectRouter, routerMiddleware } from 'connected-react-router'
...
const history = createBrowserHistory()

const store = createStore(
  connectRouter(history)(rootReducer), // new root reducer with router state
  initialState,
  compose(
    applyMiddleware(
      routerMiddleware(history), // for dispatching history actions
      // ... other middlewares ...
    ),
  ),
)

Step 2

  • Wrap your react-router v4 routing with ConnectedRouter and pass the history object as a prop.
  • Place ConnectedRouter as a child of react-redux's Provider.
...
import { Provider } from 'react-redux'
import { Route, Switch } from 'react-router' // react-router v4
import { ConnectedRouter } from 'connected-react-router'
...
ReactDOM.render(
  <Provider store={store}>
    <ConnectedRouter history={history}> { /* place ConnectedRouter under Provider */ }
      <div> { /* your usual react-router v4 routing */ }
        <Switch>
          <Route exact path="/" render={() => (<div>Match</div>)} />
          <Route render={() => (<div>Miss</div>)} />
        </Switch>
      </div>
    </ConnectedRouter>
  </Provider>,
  document.getElementById('react-root')
)

Now, it's ready to work!

Examples

See the examples folder

FAQ

Build

npm run build

Generated files will be in the lib folder.

Contributors

See Contributors and Acknowledge.

License

MIT License