Насколько я понял, 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?