use-push-router
Version:
A custom hook that simplifies modifying the search params in Next.js
45 lines • 1.5 kB
JavaScript
export const updateSearchParams = (currentSearchParams) => (params) => {
const newSearchParams = new URLSearchParams(currentSearchParams);
if ('add' in params && params.add) {
Object.entries(params.add).forEach(([key, value]) => {
if (Array.isArray(value)) {
value.forEach((v) => {
newSearchParams.append(key, v);
});
}
else {
newSearchParams.append(key, value);
}
});
}
if ('remove' in params && params.remove) {
Object.entries(params.remove).forEach(([key, value]) => {
if (typeof value === 'undefined') {
newSearchParams.delete(key);
}
else if (Array.isArray(value)) {
value.forEach((v) => {
newSearchParams.delete(key, v);
});
}
else {
newSearchParams.delete(key, value);
}
});
}
if ('set' in params && params.set) {
Object.entries(params.set).forEach(([key, value]) => {
newSearchParams.delete(key);
if (Array.isArray(value)) {
value.forEach((v) => {
newSearchParams.append(key, v);
});
}
else {
newSearchParams.set(key, value);
}
});
}
return newSearchParams;
};
//# sourceMappingURL=update-search-params.js.map