2017-08-29 54 views
0

我正在使用redux-observable構建一個具有react-native的應用程序。 現在我正在努力做一個簡單的裝飾,通過使用史詩來減少可觀察到的兩個動作。我試圖實現的只是將兩個動作映射到一個動作。使用史詩在可重複觀察的序列中一起測序兩個動作

我得到的錯誤是:

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代碼,如果史詩是比這更應該工作的流,還是隻能從史詩派發單個動作?

+2

哪一行拋出的錯誤?你確定它在你在這裏展示的代碼中的某處?你也許想從'rxjs'而不是'rx'導入。 – martin

+1

我也同意這是可疑的 - 你是否使用v4適配器(redux-observable-adapter-rxjs-v4)?如果沒有,你肯定會需要使用v5發佈到npm作爲'rxjs'而不是'rx' – jayphelps

+0

謝謝你,馬丁,這是問題。我需要使用rxjs而不是rx,這是redux-observable的依賴,然後一切正常。我猜他們有些區別。 –

回答

2

看起來你正在導入rx(這是v4),而不是rxjs(這是v5)。所以你的代碼提供了一個v4 Observable到v5 Observable的flatMap(默認情況下可以爲你指定v5)。這兩個版本默認無法互通,但有temporary interop layers。我承認這很令人困惑。

將v4與redux-observable一起使用的最佳方式是包含我們爲其創建的適配器redux-observable-adapter-rxjs-v4。如果你在意外使用v4或者其他方面沒有什麼區別,那麼絕對使用v5。

一旦你解決這個問題,該代碼如預期所提供的作品,沒有錯誤:https://jsbin.com/xiqigi/edit?js,console

+0

我被我的頭撞了2個小時,並沒有檢查項目依賴。謝謝你的反饋。 –

相關問題