I am unable to figure out the exact way to use devToolsExtension and middleware at the same time in the redux store.
Below is my code for the redux store.
import {createStore, combineReducers, applyMiddleware} from 'redux'; import thunk from 'redux-thunk'; import counterReducer from './../reducers/counterReducer'; const reducers = combineReducers({ counter: counterReducer }); const store = createStore( reducers, {counter: {count:0} }, // window.devToolsExtension && window.devToolsExtension(), applyMiddleware(thunk) ); export default store;
As createStore() takes 3 arguments. Before applying middleware thunk I was using it as the below code which works fine for me.
const store = createStore( reducers, {counter: {count:0} }, window.devToolsExtension && window.devToolsExtension() );
Now, I need to use devToolsExtension as well as apply the middleware at the same time.
I tried to put the devToolsExtension and applyMiddleware inside the array so that it acts as a third argument, but this won’t work.
const store = createStore( reducers, {counter: {count:0} }, [window.devToolsExtension && window.devToolsExtension(), applyMiddleware(thunk)] );
Now the situation is that I need to either use devToolsExtension as a third argument or applyMiddleware() as a third argument.
But I want to use both at the same time. How can I achieve this?
Advertisement
Answer
Use compose
from redux:
import { compose, // ... } from 'redux'; // ... const initialState = { counter: { count:0 } }; const store = compose( applyMiddleware(thunk), window.devToolsExtension && window.devToolsExtension(), )(createStore)(reducers, initialState);