【发布时间】:2021-12-15 18:42:24
【问题描述】:
我想返回一个包含 4 个对象的数组的前 2 个对象,然后在 5 秒之间添加另外两个对象。
注意:我将复制的数组 revEvents 与 reverse() 反转,因为项目按日期/时间降序排列,最近的项目排在最前面。
我目前的问题是前两个对象显示正常,然后 5 秒后,它只加载第三个对象并停止。
useEffect(() => {
let ms = 3000
let i = 0
let displayedEvents = [...props].splice(i, 2)
setEventsProps(displayedEvents.reverse())
const interval = setInterval(() => {
if (++i <= props.length) {
displayedEvents = props.splice(0, i + 2)
setEventsProps(displayedEvents.reverse())
}
}, ms)
return () => { clearInterval(interval) }
}, [])
//JSX as below
displayedEvents.map(event () => ...etc
【问题讨论】:
-
您是否尝试过删除 setInterval 并将其替换为 setTimeout? (包括clearTimeout)那么就不需要return () => {clearInterval(interval)}
标签: javascript arrays reactjs setinterval splice