@etsoo/react
Version:
TypeScript ReactJs UI Independent Framework
23 lines (22 loc) • 662 B
JavaScript
import { WindowStorage } from "@etsoo/shared";
import { useInRouterContext, useSearchParams } from "react-router-dom";
/**
* Read search parameters with cache
* @param cacheKey Cache key
* @param storage Storage
*/
export function useSearchParamsWithCache(cacheKey, storage) {
const data = {};
if (cacheKey) {
storage ?? (storage = new WindowStorage());
const paras = storage.getObject(cacheKey);
if (paras) {
Object.assign(data, paras);
}
}
if (useInRouterContext()) {
const [sp] = useSearchParams();
Object.assign(data, Object.fromEntries(sp.entries()));
}
return data;
}