javascript - 如何在单击按钮时加载更多页面
问题描述
import React, { useEffect, useState } from 'react'
import axios from 'axios'
const Url = "https://rickandmortyapi.com/api/episode/"
function Episodes() {
const [wholeData, setWholeData] = useState({})
useEffect(() => {
axios.get(Url).then(res => {
setWholeData(res.data)
})
}, [])
const { info, results: defaultR = [] } = wholeData;
const [results, setResults] = useState(defaultR)
const [page, setPage] = useState({
...info,
current: Url
})
const {current} = page
useEffect(() =>{
if(current === Url) return;
const request = () =>{
axios.get(current).then(res => {
const nextData = res.json();
setPage({
current,
...nextData.info
});
if (!nextData.info?.prev){
setResults(nextData.results);
return;
}
setResults(prev => {
return [...prev, ...nextData.results]
}); })
}
request();
}, [current])
const handleLoadMore = () =>{
setPage(prev => {
return{
...prev,
current:page?.next
}
})
}
}
return (
<div>
<div>
<form /* onSubmit={searchEpisode}*/>
<input className="form-control mt-4" type="text"
placeholder="Name of the Episode.." aria-label="Search" style={{ width: "50%", margin: "auto" }} /*onChange={searchIt} */ />
</form>
</div>
<div className="row mx-auto text-light">
{
results.map(item => {
return (
<div key={item.id} className="col-md-3">
<div className="card mt-3 mb-2 mx-auto" style={{ width: "18rem" }}>
<div className="card-body">
<h5 className="card-title text-dark">{item.id}. {item.name}</h5>
<h6 className="card-subtitle mb-3 text-muted">{item.episode}</h6>
<li href="#" className="text-muted">{item.air_date}</li>
</div>
</div>
</div>
)
}
)}
</div >
<button onClick={handleLoadMore}>LoadMore</button>
</div>
)
}
export default Episodes
我需要在一个页面中渲染 Rick and Morty 的 41 集,因为默认的前 20 集将被渲染,并且在单击按钮时,我需要使用 info 属性中的 API 渲染其余的集。但我收到这样的错误
未捕获(承诺中)类型错误:无法读取未定义的属性“协议”
解决方案
推荐阅读
- python - Python包模块未找到错误
- swiftui - SWIFTUI 绑定未更新
- google-apps-script - 复制并与同一个人共享 Google Doc
- arrays - lc3 停止循环遍历数组
- amazon-web-services - AWS Kinesis Data Firehose 将文件输出到 S3 存储桶。如何/在哪里转换数据?
- arrays - Angular 11 - 数组映射未定义
- python - 每 60 秒更新一次 HTML 表格
- python-3.x - Buildozer 进程在为 android 调试时未能执行最后一个命令错误
- python - 为什么我不能将 panda 导入到我的 python 文件中?
- ocaml - oCaml '\n' = '\n' 不会编译