微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

动态路由上的 SSR 遵循 with-apollo 示例和 `getServerSideProps`

如何解决动态路由上的 SSR 遵循 with-apollo 示例和 `getServerSideProps`

我正在关注 with-apollo 示例。我正在尝试使用 Dynamic RoutesgetServerSideProps 为帖子制作单独的页面

这是我想出来的,但我不确定这是否是最好的方法。我以为 useQuery 仅适用于 getStaticProps

// pages/post/[id].js
import App from '../../components/App'
import Header from '../../components/Header'
import { gql,useQuery } from '@apollo/client'
import { initializeApollo,addApolloState } from '../../lib/apolloClient'

const POST = gql`
  query POST($id: String!) {
    Post(id: $id) {
      title
    }
  }
`;

const SSRPage = ({ id }) => {
  const { data,loading,error } = useQuery(POST,{ variables: { id } })
  const { Post } = data
  return(
  <App>
    <Header />
    <h1>{Post.title}</h1>
  </App>
)}

export async function getServerSideProps({params}) {
  const { id } = params;
  const apolloClient = initializeApollo()

  await apolloClient.query({
    query: POST,variables: { id }
  })

  return addApolloState(apolloClient,{
    props: { id },})
}

export default SSRPage

这一切都在 Apollo 3 和 Next.js 10 中

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。