1 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超9個(gè)贊
如果沒有setTimeout所有的渲染將基本上合并為一個(gè),這就是 React 的工作方式。但是,您可以嘗試setTimeout使用動(dòng)態(tài)超時(shí)。
class App extends React.Component {
constructor(props) {
super(props);
this.state = {
color: "#000000",
}
}
changeColors = () => {
let colors = ["#000000", "#0000FF", "#FF0000", "#00FF00"];
colors.forEach((color, i) => {
setTimeout(() => {
this.setState({ color });
}, 500 * i);
});
}
render() {
return (
<div className="App" style={{ color: this.state.color }}>
<h1>Change Colors</h1>
<button onClick={this.changeColors}>change</button>
</div>
);
}
}
ReactDOM.render(<App />, document.getElementById('root'));
<script src="https://cdnjs.cloudflare.com/ajax/libs/react/16.6.3/umd/react.production.min.js"></script>
<script src="https://cdnjs.cloudflare.com/ajax/libs/react-dom/16.6.3/umd/react-dom.production.min.js"></script>
<div id='root'></div>
添加回答
舉報(bào)