話說react 代碼貢獻量最大的是位妹子。
對此沒有“正確的”答案。有些用戶更喜歡在Redux中保存每一個數據片段,以便始終保持應用程序的完全可序列化和受控版本。其他人則傾向於在組件的內部狀態中保持非關鍵或UI狀態,如“當前打開的下拉列表,按鈕是否高亮”。
聽聽gaearon怎么說
在react中, 那些和全局狀態無關的,短暫的狀態,不會涉及的復雜的方式進行數據傳遞的,例如,在某個UI元素中切換,表單輸入狀態。可以使用react 的state
那些使用終極版來處理全局性的事情,或者以復雜的方式進行變異。例如,緩存的用戶,全局彈窗狀態的 可以放,
對於通過網絡請求獲取的數據,總是使用store來支持服務器端渲染(如果您認為這是最終目標)
都能放到redux 的store 里面,在Redux中的好處是狀態可追蹤,能隨時CRUD
原則
The rule of thumb is: do whatever is less awkward
React 官方總結的 經驗法則是:Redux是簡化事情而不是復雜化,這是唯一的指導方針。
我想到的方式是,如果您使用Redux創建應用程序
使用本地組件狀態是好的。作為一名開發人員,您的工作是確定組成您的應用程序的狀態以及每個州應該在哪里生活。找到一個適合你的平衡點,並與之配合。
確定應該將什么類型的數據放入Redux的一些常見經驗法則是:
- 應用程序的其他部分是否關心這些數據?
- 你需要能夠根據這個原始數據創建更多的派生數據嗎?
- 是否使用相同的數據來驅動多個組件?
- 能否將這個狀態恢復到某個給定的時間點(例如,時間旅行調試)對你有價值嗎?
- 你想緩存數據(即,如果它已經存在,而不是重新請求它,使用什么狀態)?
有許多社區軟件包實現了在Redux商店中存儲每個組件狀態的各種方法,例如redux-ui,redux-component,redux-react-local等等。也可以將Redux的原則和reducer的概念應用到更新本地組件狀態的任務中
this.setState( (previousState) => reducer(previousState, someAction))
。