在 graphql 查询中传递查询 url 参数(Next js)
Pass a query url param inside a graphql query (Next js)
我正在尝试通过下一个 js 应用程序中的 url 中的 slug 参数获取内容。使用 getServerSideProps 时,我可以传递一个 context.query.id,但这里我尝试使用 getStaticProps。这是我目前所拥有的:
export async function getStaticProps() {
const apolloClient = initializeApollo();
const { data } = await apolloClient.query({
query: SLUG_QUERY,
});
return addApolloState(apolloClient, {
props: {
data,
},
revalidate: 60,
});
}
const SLUG_QUERY = gql`
query ($id: String!) {
postCollection(slug: { eq: $id }) {
items {
title
shortDescription
heroImg {
url
}
createdAt
slug
}
}
}
`;
我很难理解如何将 conbtext.query.id 作为参数传递给 gql 查询。
感谢帮助
将上下文传递到您的 getStaticProps
函数中
export const getStaticProps = async (context) => {
然后将您的查询移到 getStaticProps
中以使用它
postCollection(slug: { eq: $context.params.id }) {
或者,如果您希望将查询保留在函数之外(例如,如果您在其他地方重复使用它),则只需将其包装在一个将 id 作为参数的函数中
const getPostCollectionQuery = (id) => {
const SLUG_QUERY = gql`
query ($id: String!) {
postCollection(slug: { eq: $id }) {
items {
title
shortDescription
heroImg {
url
}
createdAt
slug
}
}
}
`;
return SLUG_QUERY;
};
然后您可以从 getStaticProps
函数中调用它
const { data } = await apolloClient.query({
query: getPostCollectionQuery(context.params.id),
});
我正在尝试通过下一个 js 应用程序中的 url 中的 slug 参数获取内容。使用 getServerSideProps 时,我可以传递一个 context.query.id,但这里我尝试使用 getStaticProps。这是我目前所拥有的:
export async function getStaticProps() {
const apolloClient = initializeApollo();
const { data } = await apolloClient.query({
query: SLUG_QUERY,
});
return addApolloState(apolloClient, {
props: {
data,
},
revalidate: 60,
});
}
const SLUG_QUERY = gql`
query ($id: String!) {
postCollection(slug: { eq: $id }) {
items {
title
shortDescription
heroImg {
url
}
createdAt
slug
}
}
}
`;
我很难理解如何将 conbtext.query.id 作为参数传递给 gql 查询。 感谢帮助
将上下文传递到您的 getStaticProps
函数中
export const getStaticProps = async (context) => {
然后将您的查询移到 getStaticProps
中以使用它
postCollection(slug: { eq: $context.params.id }) {
或者,如果您希望将查询保留在函数之外(例如,如果您在其他地方重复使用它),则只需将其包装在一个将 id 作为参数的函数中
const getPostCollectionQuery = (id) => {
const SLUG_QUERY = gql`
query ($id: String!) {
postCollection(slug: { eq: $id }) {
items {
title
shortDescription
heroImg {
url
}
createdAt
slug
}
}
}
`;
return SLUG_QUERY;
};
然后您可以从 getStaticProps
函数中调用它
const { data } = await apolloClient.query({
query: getPostCollectionQuery(context.params.id),
});