假設你有一個無限滾動的表格,它渲染了大量的行。向下滾動一段時間后,用戶已經加載了大約 300 行。
考慮到用戶可以洗掉行,并且這些行也必須在資料庫中被洗掉,例如,如果用戶洗掉了第170行:
。
- 我們是否應該在客戶端立即洗掉第170行,并在后臺進行DELETE呼叫?(也許會有更好的用戶體驗?)
- 我們是否應該在客戶端上顯示第170行并在后臺進行DELETE呼叫?
- 我們是否應該顯示某種加載影片,并在得到200回應后才洗掉?(可能更安全/更可靠)
- 我們是否應該顯示某種加載影片,并在獲得 200 回應后才移除?
問題的第二部分:
- 假設我們從服務器上得到了一個200回應,即DELETE請求成功,那么現在從已經被客戶端加載的資料中切出該行是否安全?(看起來更快、更有效)
- 或者,我們應該重新請求所有 ~300 行嗎?(看起來更安全,但效率很低)
- 或者我們應該重新請求所有 ~300 行?
你們都是怎么想的?我們也愿意接受其他建議/權衡考慮。謝謝!
uj5u.com熱心網友回復:
我認為為了更好的用戶體驗,可以顯示一個模式或彈出式警告(你確定要洗掉這一行嗎?),如果你點擊確定,在進行獲取請求以顯示更新的行時,顯示一個訊息(行已成功洗掉)也不是什么壞事
uj5u.com熱心網友回復:客戶端應該允許在這種數字下進行批量洗掉。當選擇多行并洗掉它們時,顯示加載影片(甚至在實際提交前顯示某種確認模式,這也可以作為加載器),然后等待回應并將其置于React reducer狀態,因此所有現有資料條目將被獲取并相應地重新渲染。因為你不希望所有的資料都被重新放入狀態中,因為這將嚴重影響性能。
如果客戶端仍然只允許在每個請求中進行一次洗掉,你應該解決其他客戶端是否也能在同一時間洗掉相同的記錄。如果是這種情況,那么你需要不斷地ping到后臺,如果行仍然存在并準備被洗掉。查閱Webhooks,但不要濫用它。
如果該頁面是為單個用戶設計的,該用戶可以一次洗掉一行,那么你可以火速洗掉該行,并等待200(但要阻止任何其他請求,例如禁用所有行的洗掉按鈕)。成功時,從客戶端狀態中洗掉行。在失敗時,根據代碼,保留它。不需要全部重繪 。
編輯。 在每個微小的變化上請求大量的資料是不可擴展的,并且在某種程度上會影響雙方(客戶端/服務器)的性能。但是,如果存在多個可以洗掉1行的用戶,這可能是不可避免的。
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/318695.html
標籤:
上一篇:錯誤。無法確定任務':app:compileDebugJavaWithJavac'的依賴性,當試圖啟動應用程式時。
下一篇:Scala中的星號和字串組合模式
