Lastor
coding 碰到一個神奇的坑,Vue 在換頁之後,歷史頁面的 watch 也被觸發,組件沒有被 unmount......
Lastor
原本的寫法邏輯,大致上是有個日期切換,onChange 之後會重打 API
Lastor
但是這邊是用 watch 去寫,而不是 onChange
Lastor
找了半天發現,有刻意被上一個 Vue 的功能,叫做 keep-alive,會讓被包在裡面的組件緩存,跳頁時不會被卸掉
Lastor
也就造成那種,原生 JS 在加載 / 卸載時,沒有移除監聽,所產生的重複監聽問題
Lastor
我推測最開始加這個 keep-alive,是因為這幾個頁面比較是那種連續表單,會切過去又切回來
Lastor
所以加上這個想提高效能,就不用一直重新初始化,跟發 onMount 的 API
Lastor
但是沒想到這樣一加上去,就不應該用 watch 去監聽 global state 然後去發 fetch
Lastor
還真第一次知道有 keep-alive 這玩意,算是學到了。只是這個沒用好,後續的人維護如果很愛用 watch 就會被雷到
載入新的回覆