🚖 Урок 4: LocalStorage — пам'ять браузера!
💾 Історія поїздок назавжди!
Закрив додаток — відкрив знову — а там історія всіх поїздок!
LocalStorage — це сейф у браузері, що зберігає дані назавжди!
💾 LocalStorage може зберігати 5-10 MB даних!
🔐 Дані залишаються навіть після закриття браузера!
💾 localStorage.setItem() — зберігаємо дані
📖 localStorage.getItem() — читаємо дані
🗑️ localStorage.removeItem() — видаляємо дані
📥 setItem('ключ', 'значення') — кладеш щось у сейф з підписом
📤 getItem('ключ') — дістаєш за підписом
🗑️ removeItem('ключ') — викидаєш конкретну річ
💥 clear() — викидаєш ВСЕ з сейфу
І головне — сейф НЕ очищається при закритті браузера! 🔒
🆚 Чому не просто змінні?
let trips = [];• Живуть тільки поки сторінка відкрита
• Перезавантажив — все пропало!
• Закрив вкладку — дані зникли
localStorage.setItem(...)• Зберігається на диску браузера
• Перезавантажив — дані на місці!
• Закрив браузер — все збережено
👆 Додай поїздки, перезавантаж сторінку — вони залишаться!
{
from: "Хрещатик",
to: "Аеропорт",
price: 250
}
'{"from":"Хрещатик",
"to":"Аеропорт",
"price":250}'
📦 → 📝 Перетворює об'єкт JavaScript на текстовий рядок.
Використовуй ПЕРЕД збереженням в localStorage!
📝 → 📦 Перетворює текстовий рядок назад на об'єкт JavaScript.
Використовуй ПІСЛЯ читання з localStorage!
localStorage працює як текстовий файл — він розуміє тільки рядки!
Якщо спробуєш зберегти об'єкт напряму:
localStorage.setItem('trip', {from: 'Київ'})
Отримаєш: "[object Object]" — марний текст! 😱
Тому завжди: stringify → зберегти → прочитати → parse
Наклеюєш ярлик (ключ) і кладеш річ (значення).
💡 key — це як ім'я файлу: унікальний ідентифікатор (завжди рядок)
💡 value — значення, яке зберігаємо (УВАГА: завжди рядок!)
💡 JSON.stringify() — "упаковує" об'єкт/масив у текстовий рядок
localStorage.setItem('trips', trips) — НЕ ПРАЦЮЄ!Масив перетвориться на рядок
"[object Object]"✅ ПРАВИЛЬНО:
localStorage.setItem('trips', JSON.stringify(trips))
• Максимум 5-10 MB на домен
• Зберігає дані назавжди (поки не очистиш)
• Працює тільки в межах одного домену
Кажеш "дай мені те, що підписано 'trips'" — і отримуєш!
💡 Повертає null — якщо ключа не існує (а не помилку!)
💡 JSON.parse() — "розпаковує" рядок назад в об'єкт/масив
💡 || [] — якщо null, використай порожній масив
const trips = JSON.parse(localStorage.getItem('trips')) || [];
Що тут відбувається:
1️⃣
getItem('trips') — читаємо рядок (або null)2️⃣
JSON.parse(...) — перетворюємо в масив (або null → null)3️⃣
|| [] — якщо null, повертаємо порожній масив
Якщо
getItem поверне null, то JSON.parse(null) = nullІ потім
null.forEach() — ПОМИЛКА! 💥
Знаєш ярлик — можеш видалити. Легко!
💡 localStorage.clear() — видаляє ВСЕ з localStorage (обережно!)
💡 loadHistory() — викликаємо при старті і після кожної зміни
setItem(key, value) | — зберегти |
getItem(key) | — прочитати |
removeItem(key) | — видалити один |
clear() | — видалити ВСЕ |
key(index) | — отримати ключ за індексом |
length | — кількість записів |
📖 ЧИТАННЯ (loadHistory):
1. Прочитай з localStorage
2. Розпарси JSON (або [] якщо null)
3. Відобрази на сторінці
💾 ЗБЕРЕЖЕННЯ (saveTrip):
1. Прочитай поточні дані
2. Додай новий елемент (push)
3. Збережи назад (stringify)
4. Оновлення відображення (loadHistory)
localStorage — дані зберігаються НАЗАВЖДИ
sessionStorage — дані видаляються при закритті вкладки
Синтаксис однаковий, різниця тільки в часі життя!
▶️ Натисни RUN і перевір!
Додай поїздку, перезавантаж сторінку — історія залишиться!
🏆 Що ти вивчив:
✅ Коли все працює:
Натисни "Готово" в редакторі!
⏱️ ~20 хв • Урок 4 з 8
Потрібна допомога?
Напиши код і натисни Run ▶
