整理 - 單向數據流 and 雙向數據流


單向數據流 and 雙向數據流

單向數據流

單項數據流並不是React獨有的概念,但是作為JavaScript開發人員,這可能是您第一次聽到他。

通常,此概念意味着數據只有一種方式可以傳輸到應用程序的其他部分。

在React中,這意味着:

  • 狀態傳遞給視圖和子組件
  • 操作由視圖觸發
  • 動作可以更新狀態
  • 狀態更新將傳遞到視圖和子組件

該視圖是應用程序狀態的結果。成員只有在采取行動時才能改變。當動作發生時,狀態被更新。

得益於單項綁定,數據不能以相反的方式流動(例如,雙向數據會發生這種情況),這具有一些關鍵優勢:

  • 她更不容易出錯,因為您可以更好地控制數據。
  • 她更容易調試,因為你知道是從哪兒來。
  • 因為該庫已經知道系統各部分的邊界,所以效率更高。

狀態始終由一個組件擁有。受此狀態影響的任何數據只能影響其下的組件:其子組件。

更改組件上的狀態永遠不會影響其父代,其兄弟姐妹或應用程序中的任何其他組件:僅影響其子代。

這就是狀態通常在組件樹中上移的原因,以便可以在需要訪問它的組件之間共享狀態。

React的一大創新,就是把每一個組件都看成一個狀態機,組件內部通過state來維護組件狀態的變化,這也是state唯一的作用。

雙向數據流

無論數據改變,或是用戶操作,都能帶來相互的變動,自動更新。

優缺點

單向數據流優缺點

優點

1、所有狀態的改變可記錄、可跟蹤,源頭易追溯。
2、所有數據只有一份,組件數據只有唯一的入口和出口,使得程序更直觀更容易理解,有利於應用的可維護性。
3、一旦數據變化,就去更新頁面(data-頁面),但是沒有(頁面-data)
4、如果用戶在頁面上做了變動,那么就手動收集起來(雙向是自動),合並到原有的數據中。

缺點

1、HTML代碼渲染完成,無法改變,有新數據,就需把舊HTML代碼去掉,整合新數據和模板重新渲染。
2、代碼量上升,數據流轉過程變長,出現很多類似的樣板代碼。
3、同時由於對應狀態獨立管理的嚴格要求(單一的全局store),在處理局部狀態較多的場景時(如用戶輸入交互較多的“富表單型”應用),會顯得啰嗦及繁瑣。

雙向數據綁定的優缺點

優點

1、用戶在視圖上的修改會自動同步到數據模型中去,數據模型中值的變化也會立刻同步到視圖中去。
2、無需進行和單向數據綁定的那些相關操作。
3、在表單交互較多的場景下,會簡化大量業務無關的代碼。

缺點

1、無法追蹤局部狀態的變化。
2、“暗箱操作”,增加了出錯時debug的難度。
3、由於組件數據變化來源入口變得可能不止一個,數據流轉方向易紊亂,若在缺乏“管制”手段,血崩。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM