我试图建立一个计时器演示程序。我用setInterval
自动倒计时器,但我的初始状态timer
是一个有2个元素的数组,我想在两个计时器上一起倒数。我该如何在两个数组元素上同时设置状态?
在我的代码中,如果我将一个id
参数传递给函数(如1或2),我可以倒数一个元素,但是我想要一起倒数,我该怎么做?
const timers = [
{
id: 1,
time: 15,
},
{
id: 2,
time: 20,
},
];
class Clock extends React.Component {
constructor(props) {
super(props);
this.state= {
timers,
}
}
componentDidMount(){
setInterval(() => {
this.countDown();
}, 1000);
}
countDown(id){
const foundTimer = this.state.timers.find(timer => timer.id === id);
foundTimer.time = foundTimer.time - 1;
this.setState({timers: this.state.timers});
}
renderTimers(){
return(
this.state.timers.map((timer) =>{
console.log(timer);
return(
<div key = {timer.id} >
<div>{timer.time}</div>
</div>
)
})
)
}
render() {
return (
<div>
{this.renderTimers()}
</div>
);
}
}
这是一个更好的方法! = D – G4bri3l
非常感谢! :) –
@Andrew Li我还有一个问题,如果我只想改变一个状态的数组(比如定时器的id是1),我怎么能不用唠叨呢? –