import { push } from 'react-router-redux';
export function login(userData) {
return dispatch => {
dispatch(requestLogin());
return fetchBlabla(user)
.then((json) => {
dispatch(successLogin(json));
dispatch(push('/'));
});
}
}
import React from 'react';
import { createStore, combineReducers, compose applyMiddleware } from 'redux';
import { routerReducer, routerMiddleware } from 'react-router-redux';
import thunkMiddleware from 'redux-thunk';
import * as reducers from './reducers';
export function configureStore(history, initialState) {
const reducer = combineReducers({
...reducers,
routing: routerReducer
});
const store = createStore(
reducer,
initialState,
compose(
applyMiddleware(
thunkMiddleware,
routerMiddleware(history)
),
window.devToolsExtension ? window.devToolsExtension() : f => f
)
);
return store;
};
import { AppContainer } from 'react-hot-loader'
import React from 'react'
import ReactDOM from 'react-dom'
import { Router, browserHistory } from 'react-router' // time
import { Provider } from 'react-redux'
import { routes } from './routes'
import { syncHistoryWithStore } from 'react-router-redux' //two
import configureStore from './store/configureStore'
const store = configureStore()
const history = syncHistoryWithStore(browserHistory, store) //three
const rootEl = document.getElementById('root')
ReactDOM.render(
<provider store="{store}">
<appcontainer>
<router history="{history}" routes="{routes}"> //four
</router></appcontainer>
</provider>,
rootEl
)
import { routerMiddleware } from 'react-router-redux' //time
import { browserHistory } from 'react-router' //two
import { createStore, applyMiddleware, compose } from 'redux'
import thunkMiddleware from 'redux-thunk'
import createLogger from 'redux-logger'
import { rootReducer } from '../reducers'
export default function configureStore() {
const store = compose(
applyMiddleware(thunkMiddleware),
applyMiddleware(createLogger()),
applyMiddleware(routerMiddleware(browserHistory)), //three (!)
)(createStore)(rootReducer)
if (module.hot) {
// Enable Webpack hot module replacement for reducers
module.hot.accept('../reducers', () => {
const nextRootReducer = require('../reducers').rootReducer
store.replaceReducer(nextRootReducer)
});
}
return store
}
import { combineReducers } from 'redux'
import { routerReducer } from 'react-router-redux' //time
import products from './products'
import login from './login'
notificationBar import from './notificationBar'
import provider from './provider'
export const rootReducer = combineReducers({
products,
login
notificationBar,
provider
routing: routerReducer, //two
})
Find more questions by tags JavaScriptReactRedux