Flux todoMVC 為什麼要費那麼多力氣實現一個功能!!!!,這樣寫的好處是神馬?
我設置全局的_list 數組就搞定了,誰能告訴我費力氣繞彎寫代碼的好處!!!
你看我這樣直接把_lists=[]寫到外面不是很簡單嗎,為什麼還要用Flux.
&
&
&
&
&
&
&
&
&&
&
&
你懶的去用React寫一個稍微大一點的東西就開始自以為自己的方法就能解決問題,我也就懶一點發幾張圖吧
我就舉一個問題: 組件之間的狀態共享,&<用戶/&>登錄了更新&<導航欄/&>, 用戶點擊了什麼東西,一大堆相關的東西需要基於這個操作被改變。。。。
react + flux模式的最主要的作用就是解決這個問題
React:
相似地:Flux
我用我在寫的一個React+Flux的項目來舉個栗子:
組件狀態的同步, 導致舞台中央的元素變化的動作有:
1. 右側設置的值改變,2.時間軸的游標位置改變,3.開始播放,4.拖拽,5.點擊選中等等,
中間舞台的動作,同樣影響其他模塊
如果用MVC的模式,各種依賴繞過來繞過去,麻煩的一逼。用Flux單向數據流,任何狀態的改變,整個page重新"渲染"(當然不是真的全盤渲染),其他的有依賴的自然就更新了, 快刀斬亂麻;
核心還是這句話:
儘管我認為flux是個不錯的架構方案,但是對採用todo這種玩具應用來作為入門示例也是覺得非常蛋疼,flux本身就是作為大型應用架構的一種選項,入門級的例子即使不需要多龐大,整個CRUD不是更合乎邏輯?狗屁todo這種繞來繞去的確不能讓人體會到精髓。
你看我這樣直接把_lists=[]寫到外面不是很簡單嗎,為什麼還要用Flux.
這也是flux的核心之一,需要共享的數據寫在外面,在「寫在外面」這一點上,flux完全沒有什麼黑魔法,就是和你一樣寫在外面而已。
_lists.push(v);
再看這兒,你是在組件內部直接修改了那個「放在外面」的數據,這就不妥了,因為這個塊數據也能會被其他的組件所改寫,地方一多,在某個時間點上你就完全不知道這個list為什麼是當前這個樣子了。
flux的做法是,這塊數據只能被自己修改,組件只能給它發個消息,怎麼修改,修補修改,都有它自己決定,這樣list的表現就是一目了然的。
這就是響應式編程,模塊是自維護的,其他的模塊只能發消息。你的做法是就傳統編程,在A模塊里直接引入B模塊,這樣就耦合了,A必須知道B的所有細節。
一個組件對應一個狀態,確實用不著flux,即使你用react,也不需要用到redux,組件內部的state就夠你用了。但是當你多個組件共享並且修改一個數據狀態時,你就知道flux的作用了。
還是那句老話,當你猶豫要不要使用flux時,那就不要用。
我覺得問題的關鍵在於你這個state中的list只存在於這個組件,別的組件無法共享這個list裡面的數據。。。如果多個組件都要用到一個list中的數據你怎麼維護?
推薦閱讀:
※如何評價 Airbnb 發布的 React Sketch.app 工具?
※如何評價 React Native?
TAG:JavaScript | React | Flux |