UNPKG

@etsoo/react

Version:

TypeScript ReactJs UI Independent Framework

30 lines (29 loc) 916 B
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]; }