2017-07-09 55 views
2

例如對於某些行爲,我希望減速器在史詩般的行爲之前處理它。反之亦然,其他行動。有沒有辦法做到這一點?在可觀察到的情況下,我應該如何控制減速器或史詩對行動的反應?

+0

根據[規格](https://redux-observable.js.org/docs/basics/Epics.html),史詩運行後*減速器。你想達到什麼目的?數據變化時你想要觸發一個動作嗎? [這個答案](https://stackoverflow.com/a/36558267/2764255)提供了一些有關這方面的見解。 –

+0

@NikosParaskevopoulos在史詩中,我正在派遣一項創造承諾的行動。當承諾成功時,我想在reducer處理它之前發送另一個動作。我這樣做是因爲我希望第二個動作的行爲有所不同,具體取決於它如何分派。 –

+0

@LeoJiang嗯,目前還不清楚你想要做什麼。 「我想在減速器處理之前發出另一個動作」是什麼意思?也許我們會更好地理解,如果你描述你想完成什麼,而不是你認爲你應該完成它?即「我這樣做,是因爲我希望第二個動作的行爲有所不同,具體取決於它如何分派」,這很接近,但沒有說明原因。提供的信息到目前爲止,這似乎是一個奇怪的要求。 – jayphelps

回答

3

據我所知,你不能修改這個 - 減速器總是先運行。該relevant chunk of redux-observable是:

return action => { 
    const result = next(action); 
    input$.next(action); 
    return result; 
    }; 

中間件將永遠傳遞動作到下一個中​​間件在管道第一,從而使其達到減速。只有在迴歸之後,它纔會將動作輸入史詩。 Redux-Saga完全一樣。

+2

要添加到此,它是[指定](https://redux-observable.js.org/docs/basics/Epics.html)史詩運行後*減速器:*「史詩運行旁邊的正常Redux調度渠道,在減員後已經收到他們[...]「*。 –

0

對於您希望史詩在減速器之前運行的任何動作,請執行2個動作。行動A:在應用程序中發送此消息,在史詩中觀看它。如果合適的話,不要在減速器中對它做任何事情。

操作B:如果操作A符合正確的條件,則在Epic中調度此操作。在減速器中處理這個。

相關問題