我有一个名为. [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
有什么建议吗?
3条答案
按热度按时间afdcj2ne1#
使用
router.asPath
获取当前页面路径,不带查询字符串:rggaifut2#
@Ghader的回答在正确的方向上,但不完整:
您需要从
pathname
中删除查询参数,否则,您将获得双重编码的URL。ukqbszuj3#
如果只是向当前路径添加查询参数,则可以完全忽略URL对象中的
pathname
字段。