【发布时间】:2020-06-03 22:52:06
【问题描述】:
我正在尝试根据传递给 handleTime 方法的参数更新状态,因此我使用计算属性名称来执行更新(使用先前的状态),但 setState(在 handleTime 方法中)不起作用。
这里是状态:
const sessionLength = {min: 25,
sec: 0}
this.state = {
breakLength: {min: 5, sec: 0},
sessionLength: sessionLength,
sessionProcessed: sessionLength,
actualState: 'Session'
}
handleTime 方法负责更新状态,而 play 方法是一个点击事件处理方法,它使用参数(要更新的属性名称)调用 handleTime
handleTime(str="sessionProcessed"){
this.setState(state=>({[str]: {...state.[str], sec: state.[str].sec - 1}}));
}
play(){
if(typeof this.intervalId === 'undefined'){
this.intervalId = setInterval(this.handleTime.bind(this),1000);
this.setState({intervalId: this.intervalId});
}
}
JSX
render(){
return(
<div class="ml-5">
<div>{this.state.actualState}</div>
<div><strong id="session">{this.state.sessionProcessed.min}:{this.state.sessionProcessed.sec}</strong></div>
<div><i id="play" class="fa fa-play" onClick={this.play}></i> <i id="pause" class="fa fa-pause" onClick={this.pause}></i></div>
</div>
)
}
}
【问题讨论】:
-
发布密码笔
标签: javascript reactjs setstate