У меня следующее состояние:
{
programmeCodes, // generated from asynch resource
programmeColors // depends on programmeCodes
}
и следующие действия для асинхронного ресурса:
export const REQUEST_PROGRAMME_CODES = 'REQUEST_PROGRAMME_CODES'
export const RECEIVE_PROGRAMME_CODES = 'RECEIVE_PROGRAMME_CODES'
function requestProgrammeCodes() {
return {
type: REQUEST_PROGRAMME_CODES,
}
}
export function fetchProgrammeCodes() {
return function (dispatch) {
dispatch(requestProgrammeCodes())
return api.fetchProgrammes()
.then(
response => response,
error => console.log('An error occurred.', error)
)
.then(json =>
dispatch(receiveProgrammeCodes(json))
)
}
}
function shouldFetchProgrammeCodes(state) {
const codes = state.programmeCodes.codes.length > 0
if (!codes) {
return true
} else if (codes.isFetching) {
return false
} else {
return codes.didInvalidate
}
}
export function fetchProgrammeCodesIfNeeded() {
return (dispatch, getState) => {
if (shouldFetchProgrammeCodes(getState())) {
// Dispatch a thunk from thunk!
return dispatch(fetchProgrammeCodes())
} else {
return Promise.resolve()
}
}
}
'programmeCodes' - это зависимость, необходимая для генерации 'programmeColors'.
Мне бы хотелось (с хорошей практикой) иметь возможность запрашивать 'programmeColors' в компоненте React, не беспокоясь о том, были ли получены коды programmeCodes.
Как мне написать действия для 'programmeColors' для достижения вышеуказанного?