Next.js: в чем разница между использованием опции "повторная проверка" в getStaticProps и использованием пакета SWR?

0

Вопрос

Next.js есть ли опция "повторная проверка" из коробки:

export async function getStaticProps(context) {
  const data = await getData();

  if (!data) {
    return {
      notFound: true,
    };
  }

  return {
    props: { data },
    revalidate: 60,
  }
}

Приведенный выше код гарантирует, что страница будет восстановлена через 60 секунд с момента запроса обновленных данных (первое обновление для запроса новых данных, второе обновление для обновления страницы). Это основано на инкрементной статической регенерации, поэтому сайт не нуждается в восстановлении.

Из документов SWR:

Если ваша страница содержит часто обновляемые данные, и вам не нужно предварительно отображать данные, SWR идеально подходит и не требует специальной настройки.: просто импортируйте useSWR и используйте хук внутри любых компонентов, которые используют данные.

Итак, означает ли это, что в данном случае useSWR в основном совпадает с next.js "переоценить" вариант? Кажется, он делает то же самое, но как часто тогда происходит повторная проверка? Есть ли какое-то преимущество в использовании одного из них перед другим?

next.js reactjs swr
2021-11-24 02:32:17
1

Лучший ответ

1

Нет, они не одинаковы и подходят для разных случаев использования.

useSWR это механизм извлечения данных, который обеспечивает механизмы кэширования и автоматической повторной проверки (которыми вы можете управлять) для сохранения свежести данных на стороне клиента. Повторная проверка данных произойдет на клиенте и принесет пользу только одному пользователю.

С помощью revalidate а инкрементная статическая регенерация позволяет восстанавливать статические страницы на стороне сервера. Вся страница снова генерируется на сервере и статически кэшируется. Любые последующие запросы (от любого пользователя) будут отправлены на восстановленную страницу.

Использование того или иного полностью зависит от ваших требований, и они не являются взаимоисключающими - вы можете использовать и то, и другое одновременно.

2021-11-24 08:43:12

На других языках

Эта страница на других языках

Italiano
..................................................................................................................
Polski
..................................................................................................................
Română
..................................................................................................................
한국어
..................................................................................................................
हिन्दी
..................................................................................................................
Français
..................................................................................................................
Türk
..................................................................................................................
Česk
..................................................................................................................
Português
..................................................................................................................
ไทย
..................................................................................................................
中文
..................................................................................................................
Español
..................................................................................................................
Slovenský
..................................................................................................................