Доступ к значениям, сгенерированным обработчиками Redux / Saga - PullRequest
0 голосов
/ 15 марта 2020

У меня есть компонент для редактирования событий. Он встроен как:

  <EventWizard
    event={event}
    categories={categories}
    saveEvent={saveEvent}
  />

Событие сохранения - это вызов диспетчеризации, сопоставленный с реквизитами как:

const mapDispatchToProps = dispatch => {
  return {
    loadEvent: eventId => dispatch(loadEvent(eventId)),
    saveEvent: values => dispatch(saveEvent(values)),
    loadCategories: () => dispatch(loadCategories())
  }
}

Внутренние взаимодействия обрабатываются сагой, и мой обработчик сохранения выглядит следующим образом:

export function* saveEventDetails({ event }) {
  const id = event['id']
  const requestURL = `${url}/promoter/event/${
    !isNaN(id) && id !== undefined && id !== null ? id : 'new'
  }`
  try {
    // Call our request helper (see 'utils/request')
    const savedEvent = yield call(request, requestURL, {
      method: !isNaN(id) && id !== undefined && id !== null ? 'PUT' : 'POST',
      body: JSON.stringify(event)
  })
    yield put(eventSaved(savedEvent, savedEvent['id']))
    yield put(loadEvent(savedEvent['id']))
    yield put(loadPreviousEvents())
    yield put(loadUpcomingEvents())
  } catch (err) {
    yield put(eventSavingError(err))
  }
}

Мой маршрут POST вернет идентификатор только что созданного события.

Я хочу, чтобы можно было получить доступ к коду, так сказать. Моя сага перезагрузит только что созданное событие из бэкэнда, но мне нужен способ выбрать его из магазина. Это требует знания идентификатора события.

Что-то вроде

const newlyCreatedEventId = await saveEvent(event)

Есть предложения? Возможно, я мог бы перехватить eventSaved (), который отправляется с идентификатором события [new].

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