我有这个redux-observable史诗,它将POST
json 主体发送到我的后端,但它实际上从来没有发送实际的网络请求。它使用Rx.DOM.Request.post(url, [body])(我想?请查看我的导入以确认)。我可以验证网络请求永远不会离开我的应用程序,更不用说到达我的后端了:
import { Observable } from 'rxjs'
import 'redux-observable'
import {
UPLOAD_IMAGE,
UPLOAD_IMAGE_FULFILLED,
UPLOAD_IMAGE_REJECTED,
UPLOAD_PRODUCT,
uploadImageFulfilled,
uploadImageRejected,
uploadProductFulfilled,
uploadProductRejected
} from './addForm.action'
import {
updateAlertModalIsOpen,
updateAlertModalMessage,
updateAlertModalTitle
} from '../alert-modal/alertModal.action'
import 'rxjs/add/operator/catch'
import { RNS3 } from 'react-native-aws3'
import { ajax } from 'rxjs/observable/dom/ajax'
export const uploadProductEpic = action$ =>
action$.ofType(UPLOAD_PRODUCT)
.mergeMap(action => {
ajax.post(
'http://192.168.20.3:4000/products',
action.payload,
{ 'Content-Type': 'application/json' })
})
.map(response => uploadProductFulfilled(response))
.catch(error => Observable.of(uploadProductRejected(error)))
它通过按下按钮来调用:
onPress={() => {
let product = {
"name": props.name,
"brand": props.brand,
"description": props.description,
"image": "fakeUrl"
}
props.uploadProduct(JSON.stringify(product))
这是action
上述史诗中对象的内容:
payload: "{"name":"v","brand":"v","description":"v","image":"fakeUrl"}"
type: "UPLOAD_PRODUCT"
是因为我的 json 使用了所有没有转义的双引号吗?
我可以验证在按下按钮时执行 ajax 帖子的史诗中的代码行确实运行,并且在第一个按钮按下时它最终调度uploadProductRejected(error)
,甚至没有发出网络请求,以及在哪里调度错误uploadProductRejected
动作是公正的{ }
,并且在随后的按钮按下时,它甚至不会发送拒绝或已完成的动作。
知道为什么它被拒绝,为什么它甚至从未尝试发出网络请求吗?