2016-05-20 57 views
0

假設我的組件不需要局部狀態來簡化本地組件標誌,這些標誌不需要污染我的存儲,更不用說需要調度程序和動作處理程序的所有代碼開銷。地方國家是否因反應減少而避免?我沒有看到我的用例的變通辦法,除了把所有東西都放到我的店裏 - 太多的工作了。如何在react-redux中將組件的作用域綁定到mapStateToProps?

回答

0

回答你的問題:是的,本地狀態被反應減少了。

redux的哲學是,你的組件純粹是你的應用程序狀態的視圖。他們自己不應該持有國家。

但是,在您感到惱怒之前,您應該注意,關於REDX的一大優點是該商店很適合使用。這只是一個狀態樹,你編寫的任何reducer只需要處理它自己的那部分樹。我有一些減速機在我的應用程序,都是五行:

export default const isFullScreen = (state = false, action = null) => { 
    if (action && action.type === actions.TOGGLE_FULL_SCREEN) { 
    return !state; 
    } 
    return state; 
}; 

把一切,即使是小東西的好處,在你的店也很多。其中最大的一個是,任何其他組件都可以通過mapStateToProps知道任何其他組件的狀態。如果你依賴當地的國家,那透明度就會消失,事情會(並且確實)不同步。另一個好處是,你可以實現很酷的時間旅行的東西,在這裏你可以從狀態歷史記錄中推送和彈出狀態快照,並通過應用程序中的動作進行回退和轉發(也可以通過本地狀態消失)。

如果在一天結束時,這還不足以說服你將所有東西都放在商店中,那麼仍然可以使用本地狀態而不會破壞重複。我不推薦它。

祝你好運!

+0

謝謝,這是有道理的,我希望在react-redux模塊中記錄得更清楚一點,我希望它可以禁用反應組件的本地狀態,從而使該構造非常清晰。 – LMS5400

+0

這絕對需要一些習慣。我發現它有助於嘗試使我的組件具有純功能性。和in一樣,不要使用ES6'class'或'React.createComponent',而應將組件編寫爲一個函數,其中道具以參數形式出現。這將有助於您逐步淘汰使用本地狀態。 – Ian

+0

經過一些更多的修補和轉換我的應用程序使用這一點後,我一路回來!我只是不喜歡嘗試編寫減速器和處理程序,以便我在此過程中所做的每一個小改動。我想要一個靈活的,輕量級的組件,我真的希望私人狀態。 我正在爲我的數據庫和一些幫助變量的數據保留我的redux商店,除此之外,其餘的都是私人的,這使得處理起來更容易。 – LMS5400

相關問題