[英]Can not add query params to the nextjs dynamic route
我有文件命名。 [slug].js
。
我想做的是我想向这个动态路由添加查询参数,这是代码。
await router.replace({
pathname: `${router.pathname}`,
query: { coupon },
},
undefined,
{ shallow: true });
每 static 页面都可以正常工作,但在动态页面上它会给我这个错误:
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
有什么建议吗?
使用router.asPath
获取当前页面地址:
router.replace({
pathname: `${router.asPath}`,
query: { coupon },
},
undefined,
{ shallow: true });
@Ghader 在正确方向上的回答,但不完整:
router.replace(
{
pathname: router.asPath.split('?')[0],
query: { coupon },
},
undefined,
{ shallow: true }
);
您需要从pathname
中删除查询参数,否则您将获得双重编码的 URL。
如果您只是将查询参数添加到当前路径,则可以完全省略 URL object 中的pathname
名字段。
router.replace(
{ query: { coupon } },
undefined,
{ shallow: true }
);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.