標籤:

什麼時候react.js合適使用redux與不使用?


不想糾結細節了,關評論了,直接看我結論——用 Redux,因為 React 不夠用的。


你還可以選擇mobx


都2018年了,就別吹

If you are not sure whether you need it, you probably not.

這句話了,過時了,說這句話的人,都開發了新的context api了,為什麼?就是因為所有人都在用redux,他本人想改變這個現狀。

前端已經進入全面的工程化,數據流管理工具必須要用,整天做一些不需要redux之類的管理工具的小demo,完全沒有長進,還停留在2013年react剛出來的水平?

redux最佳實踐都出來了,趕緊用上吧。

那麼本題的最佳答案來了:

任何時候


用react-router和項目越來越大時必須使用


當你的組件模塊之間需要數據共享,以及管理的時候


當你有多個組件要 讀取/修改 同一個state的時候,就需要用到redux。


業務比較複雜的場景還是建議引入Redux這樣的狀態管理工具。

優點:

Redux可以讓你的狀態/數據和具體的組件解耦。

你可以讓不同層次的組件連接到Redux的Store上去。 也可以用Redux共享你的業務數據,而無需用頂級組件/原生的事件系統來做組件間通信。

Redux的中間件提供了集中的途徑來處理一些比如Logging這樣的事情。

Redux的純函數Reducer和Action機制,讓Debug/RedoUndo這些事情更容易。

因為大量的數據都在Store中,而沒有在一層層的Component中,這也讓HMR這樣的特性更好的發揮作用。 Store的生命周期比大部分組件都要長多了,,這意味著Hot Module Replacement發生的時候,你的業務數據不會丟失。

缺點:

需要老老實實寫Action,Action Creator之類的樣板代碼。當然可以用工具函數來幫助你減輕這方便的工作量。


先搞懂redux是幹嘛的 自然就知道適用場景了


  • If you are not sure whether you need it, you probably not.

redux是用來處理正常react解決不了的問題的。如果你有非常多的component之間的數據聯動問題,用redux就非常舒服。


看redux官網的You might don』t need Redux


模塊之間互相依賴比較重的時候


工程化的代碼建議都使用redux,你可能覺得項目一開始不大,不需要做的這麼複雜。但是redux使用熟了之後,你發現這種單項數據流使得代碼的規範程度得到提升,debug的難度降低,數據都存放在store中,還避免了父子組件的數據傳遞。當然,極簡單的項目用這個就沒什麼意義了。總之,當你覺得React自帶的組件傳值開始變得麻煩時,或者是代碼的維護性存在問題是,差不多就該考慮下是不是該引入redux了。


推薦閱讀:

Vue和React的使用場景和深度有何不同?
React這樣整個全家桶真的好么?這麼碎片化會是以後前端框架的趨勢么?
ELSE 技術周刊(2017.07.31期)
如何看待文章<WHY REACT/REDUX IS AN INFERIOR PARADIGM>?
感謝《深入淺出React和Redux》的所有讀者

TAG:React |