我的'getStaticPaths'函数有问题。 当我尝试获取带有参数的动态显示时,它显示为错误: /电影/ [id] 中没有以字符串形式提供必需的参数(id),但是如果我使用上面的其他方法,它也可以工作。首先,我是文档。
import fetch from 'node-fetch';
function MovieSelect({movie}){
return(
<div>
<h1>Test: {movie.name}</h1>
<p>{movie.summary.replace(/<[/]?[pb]>/g, '')}</p>
{movie.image ? <img src={movie.image.medium} /> : null}
</div>
)
}
export async function getStaticPaths(){
const request = await fetch('https://api.tvmaze.com/search/shows?q=batman')
const movies = await request.json()
//const paths = movies.map(movie =>`/movies/${movie.show.id}`)
const paths = movies.map(movie =>({
params: {id: movie.show.id},
}))
return {
paths,
fallback: false
}
}
export async function getStaticProps({params}){
const request = await fetch(`https://api.tvmaze.com/shows/${params.id}`)
const movie = await request.json()
return{
props:{
movie
}
}
}
export default MovieSelect
答案 0 :(得分:4)
/电影/ [id]
的getStaticPaths中没有提供必需的参数(id)作为 stringid应该是错误提示的字符串。在浏览器中点击api后,您会看到ID不是字符串而是数字。您需要将其转换为字符串。
params: {id: movie.show.id.toString()},