我試圖得到什麼人會考慮人們如何組織他們的反應+終極版應用程序的網絡調用的最佳實踐的一些想法。我通常讓我的組件進行調用,獲取數據,然後將其傳遞給一個將會減少的操作。這是最好的做法,還是將網絡從我的組件中分離出來,並將該邏輯放在應用程序中的其他位置,也許在減速器中更好?如果把網絡電話在反應+終極版應用
7
A
回答
4
進行網絡通話的最佳位置在您的動作創作者中。但是,您將需要一些中間件來實現最佳效果。看看這個promise-middleware(實際上,我建議查看整個教程)。如果使用該中間件,則可以讓操作創建者返回一個承諾,並且還有三種操作類型 - 一個用於請求,一個用於處理成功的響應,另一個用於處理失敗的請求。然後,你只要聽你的減速器中的那3個動作。
因此與中間件,你可以有一個動作的創造者是這樣的:
function networkCall() {
return {
types: ['MAKE_REQUEST', 'REQUEST_SUCCESS', 'REQUEST_FAILURE'],
promise:() => {
return new Promise((resolve, reject) => {
$.ajax({
url: 'example.com/api'
type: 'GET'
});
})
}
}
}
很明顯,你可以自由地建立自己的諾言中間件,但應該設置你在正確的方向。
1
我幾乎遵循redux tutorials for Async Actions行動的模式。對我來說最重要的是保持行動中的一切異步 - 遠離組件和商店/減速器。
我也用Redux Crud規範與網絡操作相關的動作。
1
你可以使用API中間件,或者redux-api-middleware
或者你自己的東西(這對write one不是很難)。
然後,例如,你的行動創造者可以返回操作,如
{type: 'API_GET', url: '/api/userList', nextType: 'USER_LIST'}
...這將通過將發送實際的請求,然後分派像一個新的動作中間件後處理:
{type: 'USER_LIST_FETCHED', status: 200, payload: [{id: 1, ...}, ...]}
{type: 'USER_LIST_FAILED', status: 404, payload: {message: '...'}}
2
我認爲這是一件事是正確的角度來完成。您的所有網絡電話整齊地放置在您的services
中。這很容易在Redux中完成。
該文檔正確地表明,網絡電話是在你actions
。我把它們分成一個單獨的地方,你可以稱之爲「服務」。在那裏你可以定義所有的常量,比如你的API服務器URL,認證相關的東西等。這將是唯一知道你的網絡調用實現細節的地方 - 你使用哪個庫(jQuery,axios,superagent,等等)。
你的行爲將文件從這些服務中導入功能,並呼籲他們。如果您稍後決定更換網絡庫,則不必更改actions
。
相關問題
- 1. 在反應 - 終極版
- 2. 使用反應/終極版使用
- 3. 反應,終極版/反應路由器:如何在鏈接
- 4. 反應,和/終極版,在路線
- 5. AG-電網與終極版
- 6. 習慣的方法反應,終極版
- 7. 反應,和/終極版+ API的SoundCloud
- 8. 反應,終極版,和不可變
- 9. 更新道具反應,終極版
- 10. 終極版咚的反應本地
- 11. 錯誤商反應,終極版
- 12. 問題與片上()反應,終極版
- 13. 打字稿反應/終極版
- 14. 請求Axios |反應過來,終極版
- 15. 調度功能,終極版,反應
- 16. 呼叫componentWillReceiveProps反應,和/終極版
- 17. 如何使用終極版的供應商與之反應
- 18. 使用終極版 - 堅持與Baqend反應,和/終極版入門
- 19. 導航到用戶登錄成功的主頁反應+終極版+反應路由器,終極版
- 20. 轉換一個反應終極版塊反應本土
- 21. 渲染反應,引導和反應,終極版形式
- 22. CORS問題進行API調用的反應/終極版應用
- 23. HMR用於創建反應的應用程式內反應,終極版
- 24. 設定初始狀態時,如果我在終極版使用反應程序
- 25. 反應,和/終極版我可以反向使用()
- 26. 如何調用兩個函數的onClick()反應/終極版
- 27. 如何使用做出反應,終極版的提供商
- 28. 存儲「全局」對象終極版之外的存儲反應,和/終極版應用
- 29. 終極版形式始終返回多選反應的微件
- 30. 使用終極版,反應並且反應路由器-DOM 4.x的