我无法弄清楚我的组件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
}
答案 0 :(得分:0)
我的问题是关于如何在getDerivedStateFromProps内部使用本地方法!
不,您不能那样做。您无法在getDerivedStateFromProps
这样的静态方法中访问实例方法。
getDerivedStateFromProps
仅用于非常罕见的用例,您不应该经常使用它。