我正在使用redux-observable构建一个使用react-native的应用程序。 现在我正在努力通过使用史诗在redux-observable中对两个动作做一个简单的装饰。我想要实现的只是将两个动作映射到一个。
我得到的错误是:
You provided an invalid object where a stream was expected. You can provide an Observable, Promise, Array, or Iterable.
以下是我正在使用的代码:
import { Observable } from 'rx';
export const startApplicationEpic = (action$: Observable) =>
action$
.ofType('START_APPLICATION')
.flatMap(() =>
Observable.of(
{ type: 'REGISTER_PUSH_NOTIFICATIONS'},
{ type: 'AUTHENTICATION_REQUEST' }
)
);
// index.js
store.dispatch({ type: 'START_APPLICATION' })
对我来说,我使用的RxJS代码是有效的,如果史诗是一个比这应该有效的流,或者只能从史诗中发出一个动作?
答案 0 :(得分:2)
您似乎正在导入rx(即v4)而不是rxjs(即v5)。所以你的代码为v5 Observable的flatMap
提供了一个v4 Observable(默认情况下,redux-observable内部为你提供v5)。默认情况下,这两个版本不能互操作,但有temporary interop layers。我承认这一切都让人很困惑。
将v4与redux-observable一起使用的最佳方法是包括我们为其创建的适配器redux-observable-adapter-rxjs-v4。如果你在事故中使用v4,或者它没有任何区别,那么一定要使用v5。
修复后,所提供的代码按预期工作,没有错误:https://jsbin.com/xiqigi/edit?js,console