我有文件名叫。[slug].js
。
我想要做的是向这个动态路由添加查询参数,这是代码。
await router.replace({
pathname: `${router.pathname}`,
query: { coupon },
},
undefined,
{ shallow: true });
这可以很好地处理每个静态页面,但是在动态页面上,它给出了以下错误:
Error: The provided `href` (/home/[slug]?theme=dark) value is missing query values (slug) to be interpolated properly. Read more: https://err.sh/vercel/next.js/href-interpolation-failed
有什么建议吗?
发布于 2022-02-16 08:05:37
使用router.asPath
获取不需要查询字符串的当前页路径:
router.replace({
pathname: router.asPath,
query: { coupon },
},
undefined,
{ shallow: true });
发布于 2022-09-25 14:49:08
@Ghader的回答是正确的,但不完整:
router.replace(
{
pathname: router.asPath.split('?')[0],
query: { coupon },
},
undefined,
{ shallow: true }
);
您需要从pathname
中删除查询参数,否则,您将得到双重编码的URL。
发布于 2022-10-01 08:40:44
如果您只是将查询参数添加到当前路径,则可以从pathname
对象中完全省略该字段。
router.replace(
{ query: { coupon } },
undefined,
{ shallow: true }
);
https://stackoverflow.com/questions/71144867
复制