首頁 >web前端 >js教程 >列表協調問題

列表協調問題

Barbara Streisand
Barbara Streisand原創
2024-10-17 23:21:29619瀏覽

List Reconciling Problem

什麼是調和(調和)?

在Web前端開發中,這是一個區分來源目標版本的依賴清單(建立可渲染元素清單)的過程告訴專案發生了什麼:新增、刪除或移動。

問題

前兩者不是問題,但問題是判斷一個項目是否移動了

如果追蹤項目的值為 [2, 1, 3] 清單中的 1,如果清單重新排列為 [1, 2, 3],則該值會發生什麼。

  • 是否刪除了 1,然後加了另一個1?
  • 1 剛剛移到開頭嗎?

您無法判斷是否有許多操作導致了新數組或例如只有一個。你必須用不同的方式來解決這個問題。

為什麼這很重要?

好吧,除非它是前端,否則實際上可能並不重要......主要是因為開發人員希望使用者獲得效能和一致性。

假設您有 50 張音樂專輯,而您只看到 10 張預取的專輯,您按名稱搜尋特定一張專輯,這會觸發獲取另外 10 張找到的專輯的請求。

現在,您如何判斷是否需要建立更多 HTML 元素、刪除冗餘或重新排列現有元素?

這是一個真正的問題,如果你做錯了,你就會留下很多問題:

  • 不應該再存在的剩餘元素
  • 本應刷新的現有元素仍包含陳舊資訊
  • 不應該刷新並覆蓋使用者更改的現有元素
  • 原本要重新排列(移動)的現有元素被刪除並建立新元素

我們開始了 - 您遇到了一致性和效能問題,使用者不會從使用您的網站中獲得樂趣。

解決方案

有不同的解決方案,但它們都有各自的局限性,沒有完美的方法。

不同的框架是如何做到這一點的?

基本上,它們(通常)強制您為每個元素添加一個關鍵屬性,以便協調演算法可以輕鬆判斷該元素是否應該重複使用、刪除,或者它不存在並需要創建。

和?

還有另一種方法,那就是迭代資料並比較已更改的內容以及專案所屬的內容。

即使 GitHub 和 Git 也無法總是準確地告訴你的檔案新增、刪除的行差異...

當然,您可以透過手動管理元素來避免協調,但您必須為此創建自己的自訂架構,通常您最終會重建整個元素清單而不重複使用。

你可以得出自己的結論。

以上是列表協調問題的詳細內容。更多資訊請關注PHP中文網其他相關文章!

陳述:
本文內容由網友自願投稿,版權歸原作者所有。本站不承擔相應的法律責任。如發現涉嫌抄襲或侵權的內容,請聯絡admin@php.cn