Проблема заключается в логике c внутри вашего редуктора.
switch (action.type) {
case 'LOADING':
nextState = true;
return nextState || state;
case 'NOT_LOADING':
nextState = false;
return nextState || state;
default:
return state;
}
Похоже, что вы действительно хотите вернуть возвращаемое вами значение nextState
, но логика c читает по-другому.
В настоящее время логика c гласит: Если nextState
верно, используйте его, иначе верните предыдущее состояние.
В случае NOT_LOADING
вы намереваетесь вернуть значение false
, но логика c гласит: Если false
истинно, вернуть false
, иначе вернуть true
. Таким образом, вы можете понять, почему это никогда не сработает.
Вместо этого, упростите случаи и просто верните то, что вы хотите, чтобы состояние было. Условия ||
не кажутся необходимыми.
function updateButtonLoading(state = initialState, action) {
switch (action.type) {
case 'LOADING':
return true;
case 'NOT_LOADING':
return false;
default:
return state;
}
}