如果我从这个
更改我的代码 componentDidMount(){
let interval = setInterval(this.timer, 1000);
this.setState({ secondsRemaining: this.state.secondsRemaining })
this.setState({ interval: interval });
};
到此:
startTime(){
let interval = setInterval(this.timer, 1000);
this.setState({ secondsRemaining: this.state.secondsRemaining })
this.setState({ interval: interval });
};
<p><input type="submit" value="Start Timer!" onClick={this.startTimer}/></p>
我可能会收到错误,指出Cannot read property 'timer' of null
指向let interval
行
为什么我会这样? (绑定错误?)
我认为下一部分会解决这个问题:
constructor(props) {
super(props);
this.state = {
secondsRemaining: 10
};
this.timer = this.timer.bind(this);
}
也许有些东西没有安装?我无法解决为什么它适用于onMount而不是onClick
答案 0 :(得分:1)
您可能必须在构造函数中将Decode(Name)
更改为this.timer = this.timer.bind(this);
。
答案 1 :(得分:0)
您可以使用箭头功能进行绑定:
JSX
<p><input type="submit" value="Start Timer!" onClick={() => this.startTimer.bind(this)}/></p>