@semki096

Как работать с функцией getStaticProps?

Насколько я понял, getStaticProps запускается при сборке, внутри получаем нужные данные, кешируем их и возвращаем эти данные. При повторном запуске этой функции - просто отдаем данные из кеша. Правильно ли я понимаю алгоритм?

Если всё так, тогда вопрос.
Есть страница products со всеми товарами:

export default function Products({ products }) {
  const router = useRouter();
  return ( ... выводим список товаров )
}
export async function getStaticProps() {
  const response = await fetch('http://localhost:3000/api/products');
  const products = await response.json();
  return { props: {products} };
}

Есть страница product конкретного товара:

export default function Product({product}){
    return( ... выводим конкретный товар )
}
export async function getStaticPaths() {
  const res = await fetch('http://localhost:3000/api/products')
  const products = await res.json()
  const paths = products.map((product) => `/product/${product.id}`)
  return { paths, fallback: false }
  }
  export async function getStaticProps({ params }) {
    const res = await fetch(`http://localhost:3000/api/products/${params.id}`)
    const product = await res.json()
    return { props: { product } }
  }

Сам вопрос. На странице всех товаров у меня есть модальное окно. При клике на "Подробнее" - открывается модальное окно (в компонент модального окна передаю id товара):

<Modal 
        isOpen={!!router.query.id}
        как сюда передать данные товара на который кликнули?
>
        здесь данные товара на который кликнули

</Modal>

Как в теперь модальном окне получить данные этого товара? Опять вызывать getStaticProps?
  • Вопрос задан
  • 1243 просмотра
Решения вопроса 1
@AlexlMl
getStaticProps - нужна для создания статики, а не кеширования. getStaticProps нужна для создания конечного html файла.
В мадальное окно все нужные данные отправляй props`сами.
Вы обернули getStaticProps в getStaticPaths и экспортируете её, может не нужно так :)
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы