В моем проекте 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 («избыточный статус ...»).Но обратный вызов не выполняется.
В чем проблема, любая помощь?