Почему пример ApolloGraphQL в NextJS использует getStaticProps, а не getServerSideProps

Мне сложно понять, почему пример Apollo GraphQL в репозитории nextjs с использованием getStaticProps. В документации NextJS говорится, что getStaticProps предназначен для получения данных во время сборки.

Пример здесь: https://github.com/vercel/next.js/tree/canary/examples/with-apollo.

В реализации (показанной ниже) он получает данные во время выполнения, а не во время сборки.

Я также не понимаю, что делает revalidate: 1, поскольку он нигде в примере не используется, но при изменении примера для использования getServerSideProps это недопустимый параметр для передачи.

export async function getStaticProps() {
  const apolloClient = initializeApollo()

  await apolloClient.query({
    query: ALL_POSTS_QUERY,
    variables: allPostsQueryVars,
  })

  return {
    props: {
      initialApolloState: apolloClient.cache.extract(),
    },
    revalidate: 1,
  }
}

person Pete    schedule 14.11.2020    source источник


Ответы (1)


Из документа:

Если вы экспортируете асинхронную функцию getStaticProps со страницы, Next.js выполнит предварительный рендеринг этой страницы во время сборки, используя реквизиты, возвращаемые getStaticProps.

Страница предварительно отрисовывается с возвращаемым значением метода во время сборки. Таким образом, запрос выполняется во время сборки, и apolloClient.cache.extract() будет использоваться для предварительной визуализации.

Для revalidate:

revalidate - необязательное количество секунд, после которого может произойти повторное создание страницы. Подробнее об инкрементальной статической регенерации

person scrimau    schedule 14.11.2020
comment
Я работаю так, как я ожидал, но apolloClient.extract () извлекает данные, которые я сгенерировал над ним, во время выполнения, поэтому я все еще не понимаю @scrimau - person Pete; 14.11.2020
comment
revalidate включает инкрементную статическую регенерацию. - person scrimau; 15.11.2020