【发布时间】:2020-02-21 12:32:55
【问题描述】:
我想将一个 ID 作为自定义参数传递给 next/link <Link /> 并能够在 getInitialProps 中访问它。我想使用干净的 URL,但我使用的 API 只允许您通过帖子 ID 查询它。因此,虽然我可以访问 getInitialProps 中的帖子 slug,但我无法使用它来查询帖子。
我目前已将其设置为在 URL 中使用 post slug
<Link href="/article" as={`/article/${urlPattern}`}>
<a>{title}</a>
</Link>
在 getInitialProps 中,我可以通过上下文参数访问 slug
Article.getInitialProps = async context => {
const slug = context.query;
// need query ID
// do api call
};
有没有办法可以将 ID 传递给以便我可以通过上下文在 getInitialProps 中访问它来执行我的 API 调用?
** 编辑 **
我通过添加一个允许我通过 context.query.id 访问 id 的查询属性更新了包含文章 ID 的 URL 只是文章名称,但我仍然需要一种方法来访问 getInItialProps 中的文章 ID,所以我进行了 api 调用。
<Link
href="/article/[article]"
as={{
pathname: `/article/${urlPattern}`,
query: { id: system.id }
}}
>
【问题讨论】:
-
slug 是否包含 id?
-
不,slug 只是帖子的标题
-
您是否尝试过像示例 github.com/zeit/next.js/blob/master/examples/… 中那样传递 url 对象?
-
是的,问题是我无法在 getInitialProps 中访问这些对象
-
不幸的是,如果您的服务器端没有提供通过 slug 获取帖子的方法,那么这是不可能的。最好更新服务器以支持通过 slug 获取