我ReactJS的初学者和javascript如何一次只设置一个数组元素的状态?
我问一个问题关于How can I setState on two array elements at once?
在这一问题的响应者告诉我不无论如何变异的状态。
但我还有一个问题,如果我想使用clearInterval()
,当定时器到达0
在我的codePen Timer Demo 2新的尝试,停止倒计时,
我使用find()
方法找到时间为0的元素,并使用clearInterval
停止倒计时,但如果一个元素的时间到达0而另一个元素的时间不到,则全部停止。
我该怎么办才能修复它?
const timers = [
{
id: 1,
time: 5,
timeIsUp: false,
},
{
id: 2,
time: 10,
timeIsUp: false,
},
];
class Clock extends React.Component {
constructor(props) {
super(props);
this.state= {
timers,
}
this.time_controller = 0;
}
componentDidMount(){
this.time_controller = setInterval(() =>{
this.countDown();
}, 1000)
}
countDown(){
const foundTimers = this.state.timers.map(timer => ({
...timer,
time: timer.time-1
}));
this.setState({timers: foundTimers});
const foundTimer = foundTimers.find(timer => timer.time === 0);
if(!!foundTimer){
clearInterval(this.time_controller);
}
}
renderTimers(){
return(
this.state.timers.map((timer) =>{
return(
<div key = {timer.id} >
<div>{timer.time}</div>
</div>
)
})
)
}
render() {
return (
<div>
{this.renderTimers()}
</div>
);
}
}
ReactDOM.render(
<Clock />,
document.getElementById('root')
);
@AndrewLi所以我需要添加time_controller到数组元素? –