searchParams
hi, I m struggling to mimic refine's filters searchParams management. So i tried to convert my filters to a param like refine struture. But when i append it to the searchParams, i always get encoded, how refine handle this?
const updateFilterParams = (field: string, value: string): void => {
const filters = generateFilterParams([
{
field,
operator: "eq",
value,
},
]);
setSearchParams((prev: URLSearchParams) => {
const newSearchParams = new URLSearchParams(prev.toString());
const filterSearchParams = new URLSearchParams(filters);
filterSearchParams.forEach((value, key) => {
newSearchParams.append(key, value);
});
return newSearchParams;
});
};
export const generateFilterParams = (filters?: CrudFilters) => {
const params = new URLSearchParams();
if (filters) {
filters.forEach((filter, index) => {
if ("field" in filter) {
const { field, operator, value } = filter;
params.append(
params.append(
if (Array.isArray(value)) {
value.forEach((value, valueIndex) => {
params.append(
});
} else {
params.append(
}
}
});
}
return params;
};
const updateFilterParams = (field: string, value: string): void => {
const filters = generateFilterParams([
{
field,
operator: "eq",
value,
},
]);
setSearchParams((prev: URLSearchParams) => {
const newSearchParams = new URLSearchParams(prev.toString());
const filterSearchParams = new URLSearchParams(filters);
filterSearchParams.forEach((value, key) => {
newSearchParams.append(key, value);
});
return newSearchParams;
});
};
export const generateFilterParams = (filters?: CrudFilters) => {
const params = new URLSearchParams();
if (filters) {
filters.forEach((filter, index) => {
if ("field" in filter) {
const { field, operator, value } = filter;
params.append(
filters[${index}][field], field);params.append(
filters[${index}][operator], operator);if (Array.isArray(value)) {
value.forEach((value, valueIndex) => {
params.append(
filters[${index}][value][${valueIndex}], value);});
} else {
params.append(
filters[${index}][value], value);}
}
});
}
return params;
};
