在我的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调用成功了。但是回调未执行。
出什么问题了,有什么帮助吗?