我将使其简单化:
链接:http://localhost:3000/product/bioCloths?activeCategory=medium&id=0
文件路径:pages/product/[product].js
。
预期: product: "bioCloths, activeCategory: "medium", id: "0"
在getStaticProps
使用[product].js
:
const ProductDetails = (props) => {
console.log("initial props", props);
return <div>product details...</div>
};
export default ProductDetails;
export async function getStaticProps(context) {
return {
props: {
context: context
},
};
}
export async function getStaticPaths() {
return {
paths: [{ params: { product: "1" } }, { params: { product: "2" } }],
fallback: true,
};
}
Props
返回:context: params: product: "bioCloths"
,不包括查询参数。
现在,如果我改用不推荐使用的getInitialProps
:
ProductDetails.getInitialProps = (context) => {
const activeCategory = context.query.activeCategory;
const id = context.query.id;
const product = context.query.product;
return {
activeCategory: activeCategory,
id: id,
product: product,
};
};
道具日志activeCategory: "medium" id: "0" product: "bioCloths"
我需要获得所有这些道具,以便可以在客户端安装之前fetch
进行数据
我知道getInitialProps
已被弃用,但可以使用。为什么getStaticProps
不起作用,我应该使用它而不是serverSideProps
吗?
这是一个电子商务,因此我无法为getStaticPaths
设置getStaticProps
的数百种可能性,因此我想在这种情况下我应该使用getInitialProps or getServerSideProps
?
P.S-getServerSideProps
给我打了个错误,指出它将仅接受.json
个文件。