【发布时间】:2021-04-25 02:35:59
【问题描述】:
我有一个对象数组,它们应该作为道具传递给一个元素以呈现每个对象的列表,但是当我尝试代码时,只有一个它呈现,而其他的被忽略,即使我有 console.log他们,我可以看到他们。代码如下:
const mainFilterQueries = ['popular', 'top_rated', 'upcoming']
const sortByMovies = "movie"
const [moviesLists, setMoviesLists] = useState([])
useEffect(()=>{
createLists(mainFilterQueries, sortByMovies , setMoviesLists, moviesLists)
console.log(moviesLists)
}, [])
async function fetchData(query, sort, setMethod, state){
let listsCreated = []
try {
const response = await fetch(`https://api.themoviedb.org/3/${sort}/${query}?api_key=${apikey}`)
const data = await response.json();
let dataObject = {key:`${sort}-${query}`, data:data.results, title:`${query}`}
console.log(dataObject)
listsCreated.push(dataObject);
setMethod([...state, dataObject])
} catch (error) {
console.error(error)
}
}
function createLists(arr, sort, target, state){
arr.forEach(query =>{
fetchData(query, sort, target, state)
})
}
return (
<React.Fragment>
{moviesLists.map(list =>{
return(
<div>
<MoviesList dataList={list}/>
</div>
)
})}
</React.Fragment>
)
【问题讨论】:
-
您可以尝试最小化代码来定位问题所在。例如,删除除
return之外的所有内容,尝试使用硬编码值,将moviesLists.length添加到输出中。像这样:return <div> {moviesLists.length} {moviesLists.map((x, i) => <span>{i}</span>)} </div>。在此之后,找出问题所在会容易得多。
标签: javascript reactjs react-hooks