为什么静态getDerivedStateFromProps看不到本地组件方法?

时间:2018-06-14 09:39:21

标签: javascript reactjs

我无法弄清楚我的组件lyfecicle有什么问题。我需要启动我的计时器_startTimer以防组件接收新的道具。但是在getDerivedStateFromProps反应生命周期方法中,对于我的本地方法null_startTimer,我始终得到_clearTimer。为什么呢?

我的问题是关于如何在getDerivedStateFromProps中使用本地方法!拜托,在将我的问题标记为出版之前,请先阅读!

谢谢!

  _startTimer = timeLeftForNextCD => {
     setInterval(() => {'hey'}, 5000)
  }

  _clearTimer = timerId => {
    clearInterval(timerId)
  }

  componentDidMount() {
    const { timeLeftForNextCD } = this.props.copyProgress
    console.log('componentDidMount', timeLeftForNextCD)
    if (timeLeftForNextCD) {
      this._runTimer(timeLeftForNextCD)
    }
  }

  static getDerivedStateFromProps(nextProps, prevState) {
    const { timeLeftForNextCD } = nextProps.copyProgress
    const { timerId } = prevState
    console.log(this._clearTimer, this._runTimer) // error - null for both
    if (timeLeftForNextCD) {
      this._clearTimer(timerId)
      this._runTimer(timeLeftForNextCD)
    }

    return null
  }

1 个答案:

答案 0 :(得分:0)

  

我的问题是关于如何在getDerivedStateFromProps内部使用本地方法!

不,您不能那样做。您无法在getDerivedStateFromProps这样的静态方法中访问实例方法。

getDerivedStateFromProps仅用于非常罕见的用例,您不应该经常使用它。