我正在尝试迁移我的应用以执行React v16.3。* API,并且很难摆脱componentWillReceiveProps
。我有依赖它的组件,并调用组件中的其他功能。
由于getDerivedStateFromProps
是静态的,我不能轻易做到这一点,我需要有关如何正确的帮助。特别是对于这种情况,我有一个超时功能,只要收到新的道具就会重置。目前如下:
componentWillReceiveProps (nextProps) {
clearTimeout(this.timeout)
this.timeout = setTimeout(() => {
this.dismiss(null, nextProps)
}, nextProps.timer)
}
正如您所看到的那样,我this.timeout
和this.dismiss
一旦对getDerivedStateFromProps
进行了更改,我就无法访问了getDerivedStateFromProps
和result=pd.concat([df1,df2]).sort_index()
。我该如何处理?有没有办法将其更改为$users=Get-ADGroupMember -Identity 'AD-Group-XYZ' -Recursive | Select SamAccountName
静态函数,还是我必须采用完全不同的方式?
答案 0 :(得分:2)
正如@Kyle所提到的,这不属于getDerivedStateFromProps
,但可能不会立即明白为什么你可以在componentDidUpdate
中安全地执行此操作。
你可以这样做的原因是你只是清理和设置定时器,在React更新DOM并完成执行之前,这不会影响任何事情。因此,如果您在预渲染componentWillReceiveProps
或更新后componentDidUpdate
中执行此操作,则没有任何区别:
componentDidUpdate()
clearTimeout(this.timeout)
this.timeout = setTimeout(() => {
this.dismiss(null, this.props)
}, this.props.timer)
}
React博客有一些example migrations可能会有所帮助。