Управление зависимым состоянием - PullRequest
0 голосов
/ 27 апреля 2018

У меня следующее состояние:

{
    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' для достижения вышеуказанного?

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...