示例:
import React, { Component } from 'react';
class ListItem extends Component {
constructor(props) {
super(props);
this.state = {
value: 'bla'
};
new Promise(resolve => {
resolve(props.value);
}).then(res => {
this.setState({ value: res });
});
}
render() {
return <div>{this.state.value}</div>
}
}
class App extends Component {
render() {
const els = [];
for (let i = 0; i< 1000; i++) {
els.push(<ListItem key={i} value={i} />)
}
return (
<div className="App">
{els}
</div>
);
}
}
export default App;
当App
呈现时,它等待ListItem
的所有承诺解决。
我希望App
立即呈现,并ListItem
在每个承诺结算后逐步更新。
我尝试将new Promise(...).then(...)
移到componentDidMount
但是没有帮助。
我知道我可以将this.setState(...)
包裹到setTimeout
中,但这对我来说似乎有些不好。