Когда redux вызывает ваш редуктор, он передается по двум параметрам Первое - это состояние с избыточностью, второе - текущее действие. Это тот случай, независимо от того, что вы называете ваши параметры. Так как ваша функция выглядит так:
state(action) {
console.log("action" + action)
switch (action.type) {
case 'INCREMENT':
return this.s + 1;
case 'DECREMENT':
return this.s - 1;
default:
return this.s
}
}
... тогда состояние редукса будет присвоено ошибочно названной переменной "действие". Между тем, действие не будет назначено ни одному параметру. Исходное состояние редукса не определено, поэтому вы видите это исключение.
Вместо этого измените вашу функцию, чтобы она принимала два параметра; государство и действие. Другими словами, используйте ваш рабочий код:
function counter(state = 0, action) {
switch (action.type) {
case 'INCREMENT':
return state + 1
case 'DECREMENT':
return state - 1
default:
return state
}
}
Это не внутри класса, но я не уверен, почему вы хотите, чтобы это было.