[英]Side Effects in Redux & React RxJS
你應該在哪里放置API-calls
在終極版 ?
我認為它們屬於Actions,因為它們是data
一部分,並且沒有副作用。
聽起來對嗎?
我想避免使用RxJS或ReduxSaga。
我在動作文件中進行API調用,但有一個單獨的函數可自行創建動作。 無論如何我都同意您的觀點,即API調用與動作創建者一起(在我們的集體看來)是最好的。
創建方案
對於2,3點, Thunk中間件是最好的選擇,因為它比Saga容易得多。
這是redux
世界中的redux
蠕蟲,並且有很多方法。 主要思想是執行可以訪問商店的dispatch
方法的功能,以便這些功能可以協調自己對商店的操作順序。 但是,每種方法都以不同的方式來修飾函數執行和副作用的固有狀態(例如,等待API調用完成,然后再將“完成”操作分派給商店):
必要的解決方案是thunk ,它們只是普通的舊函數。 當商店收到一個thunk時,它不會像常規對象操作那樣通過減速器運行thunk,而是在傳遞商店的dispatch
功能的同時執行thunk,以便thunk可以編排自己的動作序列。 有關示例,請參見redux-thunk
。
redux-saga
是一種聲明式解決方案,您可以在其中調度描述如何執行副作用的操作對象。 例如,如果副作用是從API提取,則該操作包含提取函數和要傳遞給提取函數的參數。 例如,如果fetch調用是fetchFromServer(a, b, c)
則您分派的操作將包含fetchFromServer
, a
, b
和c
。 副作用的有狀態部分保留在稱為“ sagas”的生成器函數中。
redux-observable
是另一個聲明性解決方案,但它不是使用生成器來實現“狀態”,而是使用了observable。 可觀察變量可能有點不直觀,因此我在這里不做過多介紹,但這是我使用的解決方案。 老實說,后兩者在某種程度上是同一枚硬幣的兩個側面,但我發現可觀察到的更為抽象。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.