2015-06-21 26 views
3

以重新設置密碼爲例。用戶會看到一個表單,要求他們輸入他們的電子郵件。他們提交表格,以便他們在電子郵件中發送重置鏈接。提交觸發了一個動作,該動作發出一個POST到/api/password/reset,並將返回成功或失敗。在UI中處理動作成功/錯誤的「流量」方式

顯然我想更新用戶界面,以便用戶知道發生了什麼。 Flux的方式是讓動作派發一個固定的例如PASSWORD_RESET_SUCCESS和存儲器監聽調度程序,以便他們可以更改狀態。組件監聽商店,以便在商店狀態更改時更改UI。

在密碼重置的情況下,我無法真正看到一個明智的方法來讓這個運行通過一個商店(這似乎是冗長的)。國家的唯一變化似乎與該形式/組成部分直接相關。用戶離開該頁面後無需保留任何內容。

  • 讓組件直接監聽調度程序是「流量-y」嗎?
  • 有沒有一個商店的明智設計,允許我處理這樣的通用事件,這些事件不直接鏈接到應用中的模型?

非常感謝!

(這涉及到的情況下,任何人在https://github.com/mwillmott/techbikers工作有興趣)

回答

0
  • 不,事實並非如此。 Flux的體系結構應始終遵循相同的方案 - 組件調用actionCreator,ActionCreator將動作分派給商店,商店向所有訂購的組件發出更改。這就是Flux的作用,解釋爲here
  • 我認爲最好的方法是使用一般的ResultStore,它只接受在動作中定義的鍵/值並將它們寫入散列。這樣你就可以用一個處理程序,名字爲onResultWrite或類似的東西。 Flux Stores從來就不是您模型的直接表現 - 它們更多地表現了您的整個應用程序狀態。

對於簡單的應用程序來說,通量架構顯然可能看起來過於嚴格和複雜 - 而且是這樣。但它並非針對簡單應用而設計的,而是針對包含大量組件的複雜UI而設計的 - 與獲取一樣複雜。這就是爲什麼商店,行動和組件需要儘可能與他們分開的原因。

如果您認爲您的應用程序非常簡單,那麼您總是可以採用快捷方式,例如直接將changeState回調作爲參數傳遞給操作 - 但是如果其他組件需要對PASSWORD_RESET_SUCCESS事件作出反應,給自己一個問題。當它發生時你總是可以考慮它。項目架構始終是關於權衡,靈活性與開發速度與性能的關係。

開發人員最重要的技能是瞭解這種權衡,他們的價值並知道在哪裏製造 - 而哪裏不是。

祝你好運!