31 lines
1.0 KiB
Markdown
31 lines
1.0 KiB
Markdown
# Stores Guide
|
|
|
|
`stores` 使用 Pinia 管理跨頁共享狀態、快取與全域顯示狀態。單一頁面暫時 UI 狀態應留在 page driver、component 或 composable。
|
|
|
|
## 放進 Store 的情況
|
|
|
|
- auth/session
|
|
- menu/favorites/breadcrumbs
|
|
- snackbar/messages
|
|
- 跨頁共享資料快取
|
|
- 多個頁面都需要讀寫的 domain state
|
|
|
|
## 不放進 Store 的情況
|
|
|
|
- dialog visible
|
|
- 單一頁搜尋條件
|
|
- 單一頁分頁狀態
|
|
- 單一表單 dirty / validation
|
|
- 單一頁 loading/error
|
|
|
|
## 資料流
|
|
|
|
store 可以呼叫 service module。component 不應繞過 store/composable 直接處理 token、session 或 HTTP hooks。
|
|
|
|
## 請求取消慣例
|
|
|
|
- 需要避免重複提交或快速切換造成的舊請求殘留時,在 store 層管理 `AbortController`。
|
|
- 同一類請求使用固定 key(例如 `auth/login`、`menu/get-menu`),新請求前先取消舊請求。
|
|
- service module 只接收 `signal`,不管理 controller lifecycle。
|
|
- store 在 `finally` 清理該 key,在 `clear/logout` 清理全部 key。
|