Javascript 设置状态不';使用计算属性名时不起作用

Javascript 设置状态不';使用计算属性名时不起作用,javascript,reactjs,setstate,Javascript,Reactjs,Setstate,我试图根据传递给handleTime方法的参数更新状态,因此我使用计算属性名来执行更新(使用以前的状态),但setState(在handleTime方法中)不起作用 以下是国家: const sessionLength = {min: 25, sec: 0} this.state = { breakLength: {min: 5, sec: 0}, sessionLength: sessionLength, sessionProcessed

我试图根据传递给handleTime方法的参数更新状态,因此我使用计算属性名来执行更新(使用以前的状态),但setState(在handleTime方法中)不起作用

以下是国家:

const sessionLength = {min: 25,
      sec: 0}
    this.state = {
      breakLength: {min: 5, sec: 0},
      sessionLength: sessionLength,
      sessionProcessed: sessionLength,
      actualState: 'Session'
    }
handleTime方法负责更新状态,play方法是一个click事件处理程序方法,它使用参数(要更新的属性名称)调用handleTime

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>
    )
  }
}
render(){
返回(
{this.state.actualState}
{this.state.sessionProcessed.min}:{this.state.sessionProcessed.sec}
)
}
}

不能使用点符号访问或设置计算键值,只需使用括号符号即可

e、 g

处理时间(str=“sessionProcessed”){ this.setState(state=>({[str]:{…state[str],sec:state[str].sec-1}})); } 我刚刚删除了
状态下的点。[str]
,因为这会引发错误,所以您很可能没有正确设置这些属性


尝试更改这些,看看它是否解决了问题


参考:

发布代码开放解决了问题!如果解决了此问题,请接受此答案。:)
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>
    )
  }
}