Die Renderfunktion von react ist synchron. Auch Javascript Map ist synchron. Timer zu verwenden, ist hier nicht die richtige Lösung.
Sie kann jedoch in der Komponente Zustand, verfolgen Elemente, die diesen Zustand mit Hilfe von JavaScript-Timer gemacht und aktualisiert wurden:
Eine Beispielimplementierung überprüfen diese 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)
}
})
warum tun Sie brauchen eine Verzögerung in '.map'? Könnten Sie das Problem klären? –
Geben Sie an, was Sie auf einem angemessen hohen Niveau erreichen wollen und warum Sie zu dem Schluss gekommen sind, dass eine Verzögerung erforderlich ist? – christopher
Der Anfangszustand dieses Arrays ist immer mehr als eins. Für UI-Zwecke möchte ich, dass sie nacheinander beim ersten Rendern geladen werden. – themollusk