使用redux-observable中的epic对两个动作进行排序

时间:2017-08-29 16:13:31

标签: javascript react-native redux rxjs redux-observable

我正在使用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代码是有效的,如果史诗是一个比这应该有效的流,或者只能从史诗中发出一个动作?

1 个答案:

答案 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