redux-observable:成功完成一个htttp请求后,无法更改路由器

时间:2018-10-17 15:09:03

标签: redux redux-observable

在我的React项目中,我使用redux-observable处理异步内容。我现在遇到的问题是:我想在一个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动作创建者。 并在redux层中:

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部分中,我执行回调。

现在,在then部分的console.log('redux status ...')中,HTTP调用成功了。但是回调未执行。

出什么问题了,有什么帮助吗?

0 个答案:

没有答案