使用NextJS,我试图使用具有to
andas
字段的对象路由到另一个页面:
export const routes = {
'BrowseList' : {
'to' : '/apps/Browse/list',
'as' : '/browse/list'
}
// ....
}
然后将其导入并使用,如下所示:
import { routes } from './__routes';
import Router from 'next/router';
// ....
const { to, as } = routes.BrowseList;
Router.push(to, as);
一切正常。我的困境是我在附加查询参数时试图做与此类似的事情。我正在尝试根据docs遵循以下示例:
Router.push({
pathname: '/about',
query: { name: 'Zeit' },
})
我尝试过的方法(不起作用):
Router.push({
pathname : to,
as,
query : { user_id: this.props.data.member.user.id },
});
这给了我一个控制台警告
Unknown key passed via urlObject into url.format: as
我知道我可能可以只使用字符串插值并执行以下操作:
Router.push(to, `${as}?user_id=`${this.props.data.member.user.id}`)
但是我想知道文档的示例中是否缺少某些东西,也将查询参数添加到了我的as
值中。
谢谢。
你很近@nyphur。该as
值作为push的第二个参数出现,而不是在与之相对应的对象内部to
(请检查router.d.ts以查看push的定义)。这就是为什么出现错误的原因Unknown key passed via urlObject into url.format: as
。在您提问10个月后,对于寻求答案的人来说,这可能仍然有用。假设您有一种方法可以as
按照@Gezim答案或通过任何其他方法来构建参数的查询字符串:
Router.push({ pathname: to, query: { user_id: this.props.data.member.user.id } }, as, options);
注意:基于@Gezim答案,如果您格式化字符串或pathname
在第一个参数中包含查询参数,它将可以使用BUT编码值,如果有的话%2B
(例如将被解码),您将得到+
。如果查询params对象进入内部则不会发生query
。如果您有任何依赖于此的逻辑,请考虑一下。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句