I’ve two routes like,
app/products
=> pages/products/index.js
app/products/1
=> pages/products/[page].js
Here both app/products
and app/product/1
will render the same content (same product items), is it possible to render app/products/1
content in app/products
without writing duplicate code? I could find anything similar in their documentation.
Thanks.
Advertisement
Answer
The easiest way is to abstract the content from the page level. No need for tricky code here. pages/products/index.js:
JavaScript
x
14
14
1
import { ProductPageContent } from 'components/ProductPageContent';
2
import { getProductData } from 'lib/productData';
3
4
export default function ProductsIndexPage() {
5
return <ProductPageContent />
6
}
7
8
export async function getStaticProps() {
9
const productData = await getProductData();
10
return {
11
productData,
12
}
13
}
14
pages/products/[page].js:
JavaScript
1
14
14
1
import { ProductPageContent } from 'components/ProductPageContent';
2
import { getProductData } from 'lib/productData';
3
4
export default function ProductPagePage() {
5
return <ProductPageContent />
6
}
7
8
export async function getStaticProps() {
9
const productData = await getProductData();
10
return {
11
productData,
12
}
13
}
14