Creating a Store
Learn how to create a Redux store, get the current state from the store, and pass actions to update the stored state.
The createStore
function
To create a store that will manage the global state, we have to import the createStore
function from the redux
package. We can call it by passing it a reducer function. This function returns a store object to us, which contains all the methods necessary to interact with the store-namely, dispatch
, getState
, and subscribe
. The latter two are not of the same importance when working with React, but we have mentioned them for the sake of completion. In React and Redux applications, the react-redux
binding components take care of the rerendering
of components if they are affected by a change of the state. Let’s look at an example:
import { createStore } from 'redux';
const initialState = 0;
const counterReducer = (state = initialState, action) => {
switch (action.type) {
case 'PLUS': {
return state + (action.payload || 0);
}
case 'MINUS': {
return state - (action.payload || 0);
}
default: {
return state;
}
}
};
const store = createStore(counterReducer);
We’ve just created our first simple store with a counter reducer. The createStore
function only takes a single parameter in this example (the counterReducer
), indicating that the initial state
is set to undefined
. So, we’ve set the initialState
as the standard parameter, which equates to 0
in this example.
If we pass another parameter to the createStore
function, this parameter is passed as the first state to our reducer function:
const store = createStore(counterReducer, 3);
Instead of undefined
, the initial value for our state
parameter passed to the counterReducer
would equate to 3
. The initialState
would not be set, and our counter would start counting at 3
instead of 0
.
The first initial action being dispatched takes the form of:
{type: '@@redux/INIT5.3.p.j.l.8'}
Looking at our example, this means that the default
case will activate and that only the state
passed will be returned (which also equates to the initialState
).
This default
case is important. If no other case
of the switch
statement can be fulfilled, the current state
needs to be returned from the function to avoid unwanted side effects. The reducer
function is executed after each dispatch
call and dictates the value of the next state by returning it from the function.
Getting state using store.getState()
Calling store.getState()
after initialization, we obtain an initialState
of 0
:
Get hands-on with 1400+ tech skills courses.