Установка начального состояния с помощью отдачи в приложении nextjs с ISR и SWR

#next.js #recoiljs

Вопрос:

Я пытаюсь понять, как установить мое начальное состояние отдачи, все еще используя функцию ISR nextjs.

Поэтому я создал product.ts файл внутри states каталога, файл содержит следующий код

 const productsState = atom({  key: 'productState',  default: [] })  

Я думал о том, чтобы вызвать свой api здесь и вместо установки по умолчанию в качестве пустого массива заполнить его данными из вызова api, но я уверен, что я потеряю преимущества ISR и SWR, которые приносит nextjs?

Поэтому я подумал о том, чтобы установить начальное состояние внутри метода getStaticProps

 export const getStaticProps: GetStaticProps = async () =gt; {  const res: Response = await fetch("http://127.0.0.1:8000/api/products");  const {data} = await res.json();   return {  props: {  data  },  revalidate: 10  } }  

Но это будет выполняться только один раз во время сборки, поэтому данные будут устаревшими, поэтому я сделал крюк, чтобы получить свои продукты с помощью SWR

 import useSWR from "swr"; import { baseUrl} from '../lib/fetcher'  export const useGetProducts = (path: boolean | string, options: {} = {}) =gt; {  if (!path) {  throw new Error("Path is required")  }   const url = baseUrl   path   const {data: products, error} = useSWR(url, options)   return {products, error} }  

затем это вызывается внутри компонента страницы

 const Home: NextPage = ({data}: InferGetStaticPropsTypelt;typeof getStaticPropsgt;) =gt; {  const {products, error} = useGetProducts('/api/products', {  initialData: data,  }) }  

Теперь мне просто интересно, является ли это жизнеспособным способом установить начальное состояние в отдаче без ущерба для преимуществ ISR и SWR?

исходя из vue/nuxt, я бы создал глобальный магазин, где я бы вызвал свой api и установил состояние для данных api, но, похоже, в react/recoil все немного по-другому?