@etsoo/react
Version:
TypeScript ReactJs UI Independent Framework
30 lines (25 loc) • 649 B
text/typescript
import { IStorage, 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?: string,
storage?: IStorage
) {
const data = {};
if (cacheKey) {
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;
}