Вы отправляете простой объект:
{
type: 'BLA_BLA'
}
Это ваш action.
Это
function qq() {
return {
type: 'BLA_BLA',
}
}
ваш "создатель действия" (action creator).
Чтобы объект с типом (и данными если нужно), попал в редьюсер, его нужно прокинуть через специальную "трубу" - dispatch (диспетчер).
То есть:
dispatch(qq())
// или
dispatch({
type: 'BLA_BLA',
})
Затем, пропущенный через "диспетчер" объект, попадет во все редьюсеры. В каком-то из редьюсеров, будет команда "фас" на определенный тип (type), в нашем случае - строка 'BLA_BLA', значит:
export default (state = initialState, action) => {
switch (action.type)
{
case 'BLA_BLA':
// вот сюда придет javascript компилятор, так как вы попали в нужный кейс
// ибо выше указано - switch по типу экшена (action.type)
// ниже вы делаете что вам нужно с вашими данными
// конкретно в этом кейсе, вы берете все что было в state и изменяете loading на true
return { ...state, loading: true };
case CALLBACK_SUCCESS:
// сюда action с типом 'BLA_BLA' не попал
return { ...state, status: 'OK' };
case CALLBACK_ERROR:
// сюда тоже
return { ...state, status: 'ERROR', message: action.message };
default:
// и сюда
return state;
}
}