我使用查询参数来存储选中复选框的值,但是我只能存储查询参数的一个值,如果我尝试存储另一个值,它会用新值替换该查询参数的值。我希望我的URL看起来像这样:https://myapp.com/?s=6432bc97cbde9,64bd7707c0397eda
但在当前行为中,它更新s
的值,而不是附加新值。
我的代码:
"use client";
const MyComponent = ({ title, options, initialFacets }) => {
const searchParams = useSearchParams();
const router = useRouter();
const titleName = title.toLowerCase();
const selectedFilter = searchParams.get(titleName);
const toggleOption = (optionValue) => {
const optionUrl = `/?${createQueryString(
searchParams,
titleName,
optionValue
)}`;
router.replace(optionUrl, { scroll: false });
};
return (
<CommandGroup>
{options.map((option) => {
return (
<CommandItem
key={option.value}
onSelect={() => toggleOption(option.value)}
className="cursor-pointer"
>
<div
className={cn(
"mr-2 flex h-4 w-4 items-center justify-center rounded-sm border border-primary",
selectedFilter === option.value
? "bg-primary text-primary-foreground"
: "opacity-50 [&_svg]:invisible"
)}
>
<CheckIcon className={cn("h-4 w-4")} />
</div>
</CommandItem>
);
})}
</CommandGroup>
);
};
1条答案
按热度按时间iugsix8n1#
这样,您的URL将为同一个查询参数提供多个值,用逗号分隔,就像您想要的那样。