@etsoo/react
Version:
TypeScript ReactJs UI Independent Framework
30 lines (29 loc) • 916 B
JavaScript
import { DomUtils } from "@etsoo/shared";
import { useSearchParams } from "react-router";
function parseData(template, sp) {
const paras = Object.fromEntries(Object.keys(template).map((key) => {
const type = template[key];
return [key, type.endsWith("[]") ? sp.getAll(key) : sp.get(key)];
}));
// Return
return DomUtils.dataAs(paras, template, false);
}
/**
* Extended useSearchParams of react-router-dom
* Provide exact type data
*/
export function useSearchParamsEx(template) {
// Get parameters
const [sp] = useSearchParams();
return parseData(template, sp);
}
/**
* Extended useSearchParams of react-router-dom
* Provide exact type data and setSearchParams function
*/
export function useSearchParamsEx1(template) {
// Get parameters
const [sp, setSearchParams] = useSearchParams();
// Return
return [parseData(template, sp), setSearchParams];
}