redux-observable: не удалось сменить маршрутизатор после успешного выполнения одного запроса htttp - PullRequest
0 голосов
/ 17 октября 2018

В моем проекте React я использую наблюдаемую избыточность для обработки асинхронных операций.И проблема, с которой я столкнулся прямо сейчас: я хочу изменить новый маршрутизатор после одного успешного запроса HTTP, я рассматриваю этот случай следующим образом:
:

Первый в компоненте:

  handleSubmit = () => {
    this.props.createGeofence(geofenceObj, res => {
      console.log('router change....', res.data.id)
      Message.success(`Successfully created GeoFence: ${res.data.id}`)
      this.props.history.push(opsToolsGeoFence.detail(res.data.id))
    })
  }

функция handleSubmit была вызвана для вызова создателя действия createGeofence.А в слое редукса:

export const request = (payload, callback) => ({ type: REQUEST, payload, callback })

export const epic = (action$, store, { geoFenceApi }) =>
  action$
    .ofType(REQUEST)
    .switchMap(({ payload, callback }) =>
      geoFenceApi.create(payload).then(res => {
        console.log('redux status...')
        callback && callback(res)
        return res
      })
    )
    .map(res => success(res))
    .catch((err, stream) => Observable.merge(Observable.of(failure(err)), stream))

реактор действия request - это просто вышеупомянутый createGeofence, который получает два параметра: полезную нагрузку и обратный вызов.Я поместил логику изменения маршрутизатора в функцию обратного вызова.

geoFenceApi.create - абстрактная функция, выполняющая HTTP-запрос.В части then я выполняю обратный вызов.

Теперь, при успешном выполнении HTTP-вызова, в части then был распечатан файл console.log («избыточный статус ...»).Но обратный вызов не выполняется.

В чем проблема, любая помощь?

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