如果我改变我的代码
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
pointing to the let interval
line
为什么我会得到这个? (绑定(bind)错误?)
我认为下一部分会解决这个问题:
constructor(props) {
super(props);
this.state = {
secondsRemaining: 10
};
this.timer = this.timer.bind(this);
}
也许有些东西没有安装?我无法弄清楚为什么它在 Mount 上有效,但在 onClick 上无效
最佳答案
您可能需要将 this.timer = this.timer.bind(this);
更改为 this.startTimer = this.startTimer.bind(this);
你的构造函数。
关于javascript - React 函数在 componentDidMount 上工作但不在 onClick 上工作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/40763845/