我正在将Next.js 9.3.5与Apollo和GraphQL一起用于我正在从事的SSR项目。我已经实现了官方页面中提供的以下示例:
https://github.com/vercel/next.js/blob/canary/examples/with-apollo/lib/apollo.js
所以我的页面看起来像这样:
import { withApollo } from '../apollo/withApollo';
const Collections = (props) => {
// ...
}
export const getServerSideProps = async ({ apolloClient }) => {
console.log(apolloClient); // returns undefined
return {
props: {},
};
};
export default withApollo()(Collections);
问题是apolloClient
在getServerSideProps
内部不可用。但是,如果我使用getInitialProps
,则可以正常工作。 Next.js官方文档说我们应该使用getServerSideProps
。
如果您使用的是Next.js 9.3或更高版本,我们建议您使用 getStaticProps或getServerSideProps而不是getInitialProps。
有什么想法吗?
答案 0 :(得分:0)
我只是使用它并在任何地方调用以获取getServerSideProps中的客户端访问权限
export async function getStandaloneApolloClient() {
const { ApolloClient, InMemoryCache, HttpLink } = await import(
"@apollo/client"
);
return new ApolloClient({
link: new HttpLink({
uri: process.env.BASE_URL,
fetch
}),
cache: new InMemoryCache()
});
}