React函数在componentDidMount上工作但不在onClick上

时间:2016-11-23 11:53:59

标签: javascript reactjs onclick

如果我从这个

更改我的代码
  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

2 个答案:

答案 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>