gpt4 book ai didi

javascript - 在 React 中延迟数组映射迭代

转载 作者:塔克拉玛干 更新时间:2023-11-02 23:01:18 26 4
gpt4 key购买 nike

我有这个数组,我想对其进行迭代。我需要在下一个之前延迟几秒钟。

{this.props.things.map((thing, index) => {
return (
<div key={index}>{thing.content}</div>
// Delay 1 second here
)
})}

这个数组的初始状态总是不止一个。出于 UI 目的,我希望它们一个一个地加载到 DOM 中。

最佳答案

react的render函数是同步的。 javascript map 也是同步的。所以在这里使用定时器不是正确的解决方案。

但是,您可以在组件状态下跟踪已呈现的项目并使用 javascript 计时器更新该状态:

有关示例实现,请查看此 fiddle :

React.createClass({

getInitialState() {
return {
renderedThings: [],
itemsRendered: 0
}
},

render() {
// Render only the items in the renderedThings array
return (
<div>{
this.state.renderedThings.map((thing, index) => (
<div key={index}>{thing.content}</div>
))
}</div>
)
},

componentDidMount() {
this.scheduleNextUpdate()
},

scheduleNextUpdate() {
this.timer = setTimeout(this.updateRenderedThings, 1000)
},

updateRenderedThings() {
const itemsRendered = this.state.itemsRendered
const updatedState = {
renderedThings: this.state.renderedThings.concat(this.props.things[this.state.itemsRendered]),
itemsRendered: itemsRendered+1
}
this.setState(updatedState)
if (updatedState.itemsRendered < this.props.things.length) {
this.scheduleNextUpdate()
}
},

componentWillUnmount() {
clearTimeout(this.timer)
}

})

关于javascript - 在 React 中延迟数组映射迭代,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37372577/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com