2025-01-04 旅行分帳應用程式-步驟06
資料「即時儲存到 localStorage」
太好了,我來幫你把資料「即時儲存到 localStorage」的功能整合進你的 Vue 應用程式,這樣就算重新整理畫面,資料也不會消失。
✅ 我們要儲存哪些資料?
- 成員資料
members
- 支出資料
expenses
- 預設的支出項目
defaultExpenseItems
🛠 修改步驟
- 加入
watch
監聽變化 → 自動存入 localStorage
- 在
onMounted
時自動從 localStorage 載入資料
✅ 完整整合範例(請加在 <script setup>
中)
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31
| import { ref, watch, onMounted } from 'vue'
const members = ref([]) const expenses = ref([]) const defaultExpenseItems = ref([])
function saveToLocalStorage() { localStorage.setItem('splitBill_members', JSON.stringify(members.value)) localStorage.setItem('splitBill_expenses', JSON.stringify(expenses.value)) localStorage.setItem('splitBill_defaultItems', JSON.stringify(defaultExpenseItems.value)) }
function loadFromLocalStorage() { const savedMembers = localStorage.getItem('splitBill_members') const savedExpenses = localStorage.getItem('splitBill_expenses') const savedItems = localStorage.getItem('splitBill_defaultItems')
if (savedMembers) members.value = JSON.parse(savedMembers) if (savedExpenses) expenses.value = JSON.parse(savedExpenses) if (savedItems) defaultExpenseItems.value = JSON.parse(savedItems) }
watch([members, expenses, defaultExpenseItems], saveToLocalStorage, { deep: true })
onMounted(() => { loadFromLocalStorage() })
|
📌 注意
watch([...], ..., { deep: true })
是為了監控陣列或物件裡的變化。
- key 名像
splitBill_members
可以依你的 App 名稱自訂,避免不同 app 的 key 衝突。
需要我幫你把這段直接整合到目前的完整程式碼裡嗎?還是你想試試看加進去?👩💻