其實沒有一定要用Pinia
反思是否因為思考固化而濫用工具。
前言
會有這個體悟是來自於在做 side project 時知道 tanstack query 這個工具後,對於非同步的資料處理有了進一步的認識後,也讓我想到,以前是否都搞錯 Pinia 的使用方式呢?
原本我的使用方式?
原本在寫 Vue 時,會無腦的導入後並將各模組所需要的資料、方法做包裝進 store,完全沒有考慮到這些資料是不是其他非父子模組的地方也需要,只覺得這樣包起來很有規矩(?, 當認知稍微提升之後想到,既然我沒有其他模組要用,為什麼不用 props 傳進去就好? 幹嘛寫一個 store 增加維護成本跟記憶體負擔?
還有一點是,如果資料來源是透過 API 拿到的,我該怎麼保證拿到的資料都是最新的? 無法掌握資料更新的地方就是個風險,變成每次其實還是要打一次 API 去確保拿到的資料是最新的。
後來我怎麼做?
當有了上面的想法後,我思考是不是我原本對於模組資料傳遞的設計就是錯誤的,所以開始在每次開發前先著墨在資料傳遞上而不是一昧的寫程式。
假設我很明確的知道 A、B 模組互為父子模組,那就在父模組宣告變數即可,子模組需要什麼傳下去即可。 可以控管資料來源是單一的,也因為其他模組根本也沒有要使用到,等卸載組件後就釋出記憶體了。
也意識到既然在沒有做快取的情況下,那不同模組拿相同資料就直接打 API 拿就好,根本也不用特別存起來,如此一來也不用擔心重新整理後資料被洗掉、資料是否不同步的情況。
當然這時知道有個工具叫 tanstack query 可以做這件事情可能有更好的處理方式又是另外一回事了。
結語
從這件事情後我學到一件事情,永遠要清楚知道自己使用的工具設計的目的是什麼XD (還有要讀官方文件)