我正在使用" redux-observable"用于gangularjs v1.6中的redux能力。以下代码用于Epic
export const getAllBidsAPI : any = (action$: ActionsObservable<any>, store: any, { customerService = CustomerService }) =>
action$.ofType(GET_ALL_BID)
.mergeMap((action : any) =>
Observable.fromPromise(customerService.getCustomers())
.map((res: any) => ({type : GET_ALL_BID_SUCCESS , payload : res.data.bid}))
);
在这里 customerservice尚未确认。我猜,它没有注入。
const rootEpic = combineEpics(
getAllBidsAPI
);
const rootReducer = combineReducers({
bidReducer
});
const epicMiddleware = createEpicMiddleware(rootEpic, {
dependencies : {CustomerService}
});
export const store = createStore(
rootReducer,
applyMiddleware(epicMiddleware)
);
这是我们将CustomerService作为Epic的依赖性添加的地方。但是,我会出错。
无法读取未定义的
的属性'getcustomers'
依赖性为redux-observable中 undefined
的最常见原因是它实际上是作为 undefined
;通常是因为导入/要求不正确。仔细检查您是否正确导入CustomerService
,并在文件中暂停调试器,然后将其传递给createEpicMiddleware
以确认它是(或不是)undefined
。
我看到的另一件事是他们正在使用尚未支持依赖注入的旧版本的Redux-Observable。但是,我非常有信心这是上面的第一个建议,因为Redux-Observable默认情况下,Redux-Observable不会为您的Epic 提供第三个参数。因此,就您而言,如果要归咎于Redux-Observable,您实际上会得到Cannot read property 'customerService' of undefined
,因为第三个参数是什么,而是您提供的对象。