2016-05-17 65 views
14

我目前正在學習Redux,我已經或多或少地掌握了基本概念。我明白如何與行動和減員等一起工作。我正在努力的是理解如何正確設計狀態樹。我遇到了應該/不應該存儲在應用程序狀態中的細節,何時可以使用組件狀態,處理狀態更改的最佳方式等。設計REDX狀態樹

是否有任何好的教程或任何人都可以推薦博客來了解設計狀態的最佳實踐嗎?

+3

我使用一個鴨子模式https://github.com/erikras/ducks-modular-redux,我保持每一個狀態在減少。到目前爲止,它一直在爲我工作得很好,這樣我就可以100%確定我的狀態/錯誤來自何處。 – azium

回答

4

對此有很多不同的意見。這是我做的。

  1. 減速器 - 裝東西,與我的數據模型(通常東西都在數據庫中),需要進行保存和以後使用或跨組件

  2. LocalState(反應的setState)用來處理 - 在與用戶輸入和交互相關的單個組件中處理UI元素

所以,如果我是建模對這個問題的迴應。終極版商店將有

store = { 
    session: { token: 'randomUid' } 
    user: { name: 'Austio' } 
    question: { id: 37288070 } 
} 

當我選擇的文本框中輸入數值來創建這個問題的答案是會handleInput從這個盒子,這將在answerText的的setState。

何時handleSubmit的形式,我會派遣出成功的東西像NEW_ANSWER與questionId和答案,以便我可以將它存儲在商店使用,無論我需要它。

我最好的建議是開始編程的東西,很難找到你的偏好的邊緣與使用redux /反應沒有。

+1

「LocalState(react setState) - 在與用戶輸入和交互相關的單個組件中處理UI元素......」我也看到人們也採用這種方法,但是,我絕對認爲該狀態也很關鍵,而且我把它放在商店裏。表單數據,突出顯示的內容,鼠標狀態等 - 全部!辯論我觀察到的狀態變成了一個滑坡。它可以導致困難,並減少了很多價值減少提供恕我直言。雖然這很容易! – cdaringe

+0

有趣的觀點,最終做任何更自然的事情,對我來說,存儲本地狀態在全球範圍內並不重要,這使得應用程序難以推理。我建議檢查別人的想法。另外我的觀點是來自8個開發人員在一個非常大的系統前端團隊。這是一個很好的討論https://github.com/reactjs/redux/issues/1287 – Austio

0

我會強烈建議在egghead.io https://egghead.io/courses/getting-started-with-redux

他帶您構建一個簡單的待辦事項應用程序確認了丹·阿布拉莫夫的(終極版的作者)的教程,但真正強調整個最好的國家建設實踐課程。