javascript - 每次渲染组件时如何将新项目存储在数组中?
问题描述
每次渲染组件时,我都尝试将 10 个项目存储在一个数组中。从索引 0 到 9 必须存储 10 个项目,然后必须删除这些项目,然后必须存储接下来的 10 个项目,以便我可以映射从我的 api 接收的数据。
我尝试将过滤器与地图链接,但它仅适用于前 10 个项目。
//Update
const CollectionPreview = ({title,movieItems}) => {
const index = React.useRef(0)
const movieData = movieItems.slice(index.current, index.current + 10)
index.current += 10
return (
<div className="collection-preview">
<h1 className="title">{title.toUpperCase()}</h1>
<div className="preview">
{console.log(movieData)}
</div>
</div>
);
}
解决方案
在许多情况下,您不希望就地编辑外部数据。您可以使用钩子 useRef() 来保留接下来要显示哪些项目的计数器,并在每次渲染时递增计数器。可以使用 slice() 从 movieItems 数组中获取项目,这不会修改原始数组。
function MyComponent() {
const index = React.useRef(0)
const movieData = movieItems.slice(index.current, index.current + 10)
index.current += 10
}
推荐阅读
- xml - Qt QML XQuery 按降序排序
- c++ - c ++字符串文字作为模板参数
- reactjs - 打字稿中的对象参数类型定义
- python - RuntimeError: 'out' 的张量在 CPU 上,参数 #1 'self' 的张量在 CPU 上,但预计它们在 GPU 上(同时检查 addmm 的参数)
- java - Kotlin 应用程序启动,但由于“未解析的引用”而无法编译 maven 构建
- realm - 用户未从登录中返回,并且 app.currentUser 是一个空对象 - Mongo Realm Sync
- django - django rest框架中的意外密码字段
- c# - 如何定义支持 IntelliSense 感知参数(如格式字符串或正则表达式模式)的方法?
- php - 消息:将数据传递给视图时,CodeIgniter 中出现未定义变量错误
- javascript - 如何使用 Javascript 更改跨度文本?