Списки и ключи
useStorageList
Composable для CRUD-операций над сохранённым массивом объектов — построен на useStorage, поэтому получает тот же конвейер TTL/миграций/шифрования/сжатия/подписи/синхронизации, просто заточенный под коллекцию, а не одиночное значение.
function useStorageList<T extends object>(
key: string,
options?: UseStorageListOptions<T>,
): UseStorageListReturn<T>Опции
Принимает все опции useStorage, кроме defaultValue (список всегда по умолчанию []), плюс:
keyField
keyof T & string · по умолчанию: 'id'
Свойство, используемое для идентификации элемента в update()/remove()/find().
Возвращаемое значение
items
Ref<T[]>
Полный список, реактивный.
isReady
Ref<boolean>
false, пока не завершится первичное чтение.
error
Ref<StorageError | null>
add
(item: T) => void
Добавляет элемент в конец.
update
(id: unknown, patch: Partial<T>) => void
Сливает patch с элементом, чей keyField совпадает с id.
remove
(id: unknown) => void
Удаляет элемент, чей keyField совпадает с id.
find
(id: unknown) => ComputedRef<T | undefined>
Вычисляемый поиск элемента, чей keyField совпадает с id.
findAll
(predicate: (item: T) => boolean) => ComputedRef<T[]>
Вычисляемый фильтр по items.
clear
() => void
Полностью удаляет базовый ключ хранилища (эквивалент remove() у useStorage).
set
(items: T[]) => void
Заменяет весь список целиком.
Пример
import { useStorageList } from 'vue-storage-kit'
interface Todo {
id: number
text: string
done: boolean
}
const { items: todos, add, update, remove, find } = useStorageList<Todo>('todos')
add({ id: 1, text: 'Write docs', done: false })
update(1, { done: true })
const todo = find(1) // ComputedRef<Todo | undefined>
remove(1)useStorageKeys
Реактивный список ключей, присутствующих в бэкенде хранилища на данный момент, опционально отфильтрованных по префиксу. Автоматически пересканирует при событиях storage из других вкладок.
function useStorageKeys(prefix?: string, target?: StorageTarget): UseStorageKeysReturnОба параметра опциональны — prefix по умолчанию '' (все ключи), target по умолчанию 'local'.
Возвращаемое значение
keys
Ref<string[]>
Ключи, находящиеся сейчас в бэкенде и совпадающие с prefix.
isReady
Ref<boolean>
false, пока не завершится первое сканирование.
refresh
() => Promise<void>
Немедленно пересканировать — обычно нужно только если вы записали в бэкенд чем-то помимо собственных composables этого пакета (например, сырым вызовом localStorage.setItem, который не вызывает событие storage в той же вкладке).
Пример
import { useStorageKeys } from 'vue-storage-kit'
// Все ключи с префиксом "myapp:" в localStorage
const { keys, isReady } = useStorageKeys('myapp:', 'local')