2016-03-16 72 views
1

我想知道終極版的樣板,如果有什麼問題,我想在這個環節的方法: https://t.co/WSV81eDwkr特林減少一些utils的

基本的想法是,當你添加一個只操作文件修改新的行動。 關於改進我在想的是將遞歸合併從reducer狀態傳遞的行爲狀態。 讓我知道

回答

1

好的想法。不幸的是,這是redux中的一種反模式。行動應該是「純粹的」,無國籍的,非變異的。您直接從一個操作中訪問狀態,該操作會繞過數據流(oldState => view => action => reducer => newState)。當然,這個框架可以幫助你,所以如果你發現這個解決方案能夠很好地適應你的項目,那麼它可能是一條可行的路。

但是要回答你的問題,如果你試圖保持Redux方法,那肯定是錯誤的方法。我看到的另一個問題是,您無法輕鬆地序列化操作,因此如果您要使用這些操作,它可能會破壞時間旅行和redux開發工具。

事實上,Redux中涉及了很多樣板文件,但要用這種新方法克服所有那些缺陷,這是付出代價的。在這種情況下調試應用程序的狀態要困難得多。

+0

非常感謝您的回覆! 我的想法是基於這篇文章 http://redux.js.org/docs/recipes/ReducingBoilerplate.html 其中Dan使用動作內部的狀態,所以我認爲這是合法的。 也許我應該通過舊的狀態作爲行動的參數,使之變得純潔? 對於你的第二點,最後,函數仍然返回一個普通的json,所以它應該是可序列化的(對不起,在這種情況下名稱updateLayoutState非常糟糕,它應該更像createLayoutAction)。 在任何情況下,您是否有任何解決方案來移除樣板文件? –

+0

啊我明白了。在我看來,他的例子之間的區別在於他將這個國家視爲一種「中間件」效應。關於你的代碼跳到我身上的是你正在更新動作創建者的應用程序狀態。如果這不是它正在做的事情,那麼它開始變得更有意義。我認爲這類問題在論壇中比質量保證網站更合適,因此我會在此停止,否則會變得太冗長,問題可能會被標記爲過於籠統。 – ZekeDroid

+0

感謝您的建議。 我已將其移至此處: https://discuss.reactjs.org/t/an-approach-to-reduce-redux-boilerplate/3485 –