В вашем примере функция редуктора
const counter = (state = 2, action) => ...
Вы фактически не переходите в состояние по умолчанию как таковое, но устанавливаете значение по умолчанию для этого состояния.
Функция может быть переписана вэто:
const counter = (state, action) => {
if (state == null) state = 2; // not good practice, just for illustration purpose
...
}
Поэтому, когда редуктор передается в 'createStore', createStore просто запускает редуктор;Аргумент состояния не определен, поэтому он установлен на 2
.
Документы Redux могут прояснить ситуацию немного подробнее:
Редукторы также могут указывать начальное значение, просматривая входящий аргумент состояния, который не определен, и возвращая значение, которое они 'Я хотел бы использовать по умолчанию.Это можно сделать с помощью явной проверки внутри редуктора или с помощью синтаксиса значения аргумента по умолчанию в ES6: функция myReducer (state = someDefaultValue, action).
redux docs