use-query-params
Version:
React Hook for managing state in URL query parameters with easy serialization.
27 lines (25 loc) • 894 B
text/typescript
import { EncodedValueMap, QueryParamConfigMap } from 'serialize-query-params';
/**
* Note: This function is destructive - it mutates encodedValues.
* Remove values that match the encoded defaults from the encodedValues object
*/
export function removeDefaults(
encodedValues: Partial<EncodedValueMap<any>>,
paramConfigMap: QueryParamConfigMap
) {
for (const paramName in encodedValues) {
// does it have a configured default and does it have a non-undefined value?
if (
paramConfigMap[paramName]?.default !== undefined &&
encodedValues[paramName] !== undefined
) {
// does its current value match the encoded default
const encodedDefault = paramConfigMap[paramName].encode(
paramConfigMap[paramName].default
);
if (encodedDefault === encodedValues[paramName]) {
encodedValues[paramName] = undefined;
}
}
}
}