我是新來的終極版,我發現,獲取數據,或試圖創建一個新的實體,當每一件小事X變成x_success和x_failure,通常,這意味着更多的行動創造者,多處理在減速器中。這裏推薦的方法是什麼?謝謝。如何降低Redux的樣板
回答
推薦的方法是x_success,x_failure等。但是,這是唯一的異步操作。讓我們來看看爲什麼:
在SPA異步操作是你想知道
操作時開始運作,
時,你有迴響應
反應的類型,成功或失敗
因此,你將有獨立的動作創建者函數返回對象和一個異步動作創建者函數,它可以返回函數而不是對象並從其主體中調用其他動作創建者。
對於你上面的原因,應該有單獨的行動創造者,一個異步動作的創造者,當然對於每一個動作的創造者,你應該在你的減速恆定。
假設你寫你的常量,行動和減速在單獨的文件夾,這可以是一個噩夢。如果是這種情況,你應該在這裏看看duck modular redux。
鴨模塊化終極版是你應該definetely實施,以減少樣板。其他的東西,如單獨的行動創造者,分開的常量,單獨檢查減速器的常量是必需的。沒有什麼可以讓它感覺不好的。
我開始幾乎從2年前的它的故事,開頭與終極版工作。雖然它是一件好事,它可以消除整個類型的錯誤,並使所有業務邏輯更加明確,但它有很多概念。對於每一個實體,你需要創建:
- 常數(每個狀態 - 在異步功能的情況下,有三個人,對啓動,成功與失敗)
- 作用(功能)
- 減速(更新狀態,有時嵌套更新)
有人提到,你可以像終極版,鴨,這是組織代碼的方法,但你不會寫更少的代碼。所以,我堅信人們應該更認真地寫下自己的包裝器。
我寫了一個庫redux-tiles,它正好處理這種情況 - 它負責創建常量,更新狀態(所以你不需要自己寫一個reducer),並且做嵌套更新如果需要的話。因此,對於異步請求的代碼,會是這個樣子:
import { createTile } from 'redux-tiles';
const apiRequest = createTile({
type: ['api', 'request'],
fn: ({ api, params }) => api.get('/api/items', params),
});
它也可以讓你的其他操作更容易結合,因爲在fn
你有機會獲得dispatch
和actions
。你可以看看更多的例子here。
我開始使用Redux,並且很喜歡這個概念,但是我真的被大量的樣板所困擾。我最終創建了actionware lib。基本上這裏就是你有actionware:
- 沒有更多的行動創造者和動作類型,只是
- 行動派遣其結果自動 爲每
- 行動
- 錯誤狀態的行動(簡單功能)和減速器每一個異步的動作沒有多餘的代碼繁忙狀態(是的,沒有多餘的代碼!)
- 撤銷行動
有很多方法可以減少粗體。這裏有一個很好的資源來自官方回購: https://github.com/reactjs/redux/blob/master/docs/recipes/ReducingBoilerplate.md
此外,還有各種社區驅動的圖書館,可以幫助您減少模板和更好地組織您的商店。終極版盒你可能會感興趣在這方面:
- 1. 如何降低採樣紋理
- 2. 如何降低
- 3. 如何降低com.smartgwt.client.widgets.form.fields.SelectItem
- 4. 如何降低的UILabel
- 5. 如何降低,如果IFRAME
- 6. React Redux Falcor和RethinkDB樣板
- 7. 降低RABL模板的複雜度
- 8. 降低熊貓的維度。面板
- 9. 如何降低USRP上的採樣頻率很高的帶寬
- 10. 如何降低頁腳
- 11. 如何降低與通知
- 12. 如何降低複雜度?
- 13. 如何降低安卓
- 14. 如何降低div高度
- 15. 如何降低R中
- 16. iPhone - 如何降低高度
- 17. 如何降低迅速IOS
- 18. 如何降低行和列
- 19. 如何降低行SQL
- 20. 如何降低使用jQuery
- 21. 降低
- 22. 如何降低的Android的.apk大小
- 23. 如何在不降低分辨率的情況下降低UIImage的質量?
- 24. 如何降低的WebPack包裝尺寸
- 25. 如何降低邊距的寬度值?
- 26. 我如何降低變量的精度?
- 27. Qt ::如何降低QSpinBox中的文本
- 28. 如何降低ffmpeg的CPU使用率?
- 29. 如何降低Android中RotateAnimation的速度
- 30. 如何降低數組中的值?
如果您正在使用數據CRUD格式的唯一的工作,你可以使用[Redux的數據實體(https://github.com/iamawebgeek/redux -data-entity),這個庫允許你擺脫大部分的樣板,還有離線支持[redux-data-entity-offline](https://github.com/iamawebgeek/redux-data-entity-離線) – iamawebgeek