Мое приложение sapper вращается вокруг компонента стола. Этот компонент таблицы имеет состояние (смещение, ограничение, сортировка, фильтры и т. Д.), Которое я хотел бы представить в строке запроса URL-адреса.
Таблица в настоящее время работает нормально, напрямую обновляя свое состояние:
<button on:click="{() => offset += limit}" disabled="{offset + rows.length >= count}">»</button>
Я вижу, что есть доступное только для чтения хранилище страниц, которое может предоставить мне доступ к текущему значению строки запроса. Я полагаю, что могу использовать что-то вроде URLSearchParams
для создания ссылок с обновленным соответствующим значением.
Есть ли лучший способ справиться с этим (какой-либо способ напрямую привязать переменные к строке запроса)? Если нет, то как лучше всего сгенерировать ссылки с обновленными строками запроса?
РЕДАКТИРОВАТЬ:
Мое текущее решение - это следующая функция:
const getLink = queryStringDiff => {
const query = $page.query;
const path = $page.path;
const str = Object.entries({...query, ...queryStringDiff}).reduce(
(acc, cur) => `${acc}&${cur[0]}=${cur[1]}`, ''
).replace('&', '?');
return `${path}${str}`;
}
На что я ссылаюсь в теге a
, заменяя указанную выше кнопку на:
href="{getLink({'offset': (offset - limit)})}"
Это работает, но я чувствую, что должен быть способ получше