我正在尝试从动态路由获取数据。我在pages/science- and -engineering/field.js中,像往常一样使用getStaticPath和getStaticProps,但由于某些原因,getStaticProps从未执行过,组件也从未呈现过。只有getStaticPath被执行了,所有的东西都运行得很好,然后它就停止了。
export const getStaticPaths = async () => {
const results = await fetch('randomapi');
const fields = await results.json();
const paths = fields.map(field => ( { params: { field: field.name } } ) );
console.log(paths) // EVERYTHING IS FINE HERE
return { paths, fallback: false }
}
export const getStaticProps = async ({params}) => {
// NOTHING IN HERE GETS CALLED
console.log('context: ', context)
console.log('yo')
const res = await fetch(`http://localhost:8080/api/v1/fields/computer-science`)
const field = await res.json()
console.log('field: ', field)
return { props: {field: field} }
}
const Details = ({ field }) => {
// NOTHING IN HERE GETS CALLED
// render component blabla
}
export default Details;最后是404页。我几乎不知道发生了什么,因为我在其他文件中做了完全相同的事情,没有问题。我在网上发现0个人有同样的问题。
基本上,问题是,为什么执行上下文不像往常那样从getStaticPaths移动到getStaticProps?
发布于 2021-05-02 18:35:21
paths中返回的参数必须与动态路由路径pages/posts/[name]匹配。您需要用name替换field。
const paths = fields.map(field => ( { params: { name: field.name } } ) );此外,还要确保在paths数组中正确生成了所有预期的路径,包括computer-science。
https://stackoverflow.com/questions/67354552
复制相似问题