Skip to content

useUrlSync ​

Двобічно синхронізує реактивний об'єкт стану з query-параметрами URL, безпечно для SSR.

Під час виклику (синхронно): читає поточний URL і заповнює стан ще до монтування дочірніх компонентів — жодного спалаху значень за замовчуванням під час завантаження сторінки чи після жорсткого оновлення.

Реактивно: стежить за станом і оновлює URL після кожної зміни через router.replace (без нових записів в історії).

Використання ​

ts
const filters = ref({
  search: '',
  sort: 'newest',
  price: { min: 0, max: 500 },
})

useUrlSync(filters)

Передайте явний список ключів, щоб випадково не синхронізувати внутрішній чи несеріалізовний стан:

ts
const state = ref({
  category: '',
  sort: 'newest',
  _sessionToken: 'abc123', // never touches the URL
})

useUrlSync(state, ['category', 'sort'])

Кодування ​

ЗначенняURL
{ price: { min: 10, max: 500 } }price.min=10&price.max=500
{ tags: ['vue', 'ts'] }tags[0]=vue&tags[1]=ts
{ items: [{ name: 'Alice' }] }items[0].name=Alice
порожній рядоквидаляється з URL
File / Blobмовчки пропускається

Параметри ​

ПараметрТипОпис
stateRef<Record<string, unknown>>Реактивний об'єкт для синхронізації
keysstring[]Ключі верхнього рівня для синхронізації. Якщо не вказано — синхронізуються всі ключі стану / URL

Повертає void.