是否应在组件卸载中清除React组件方法参考?

时间:2019-02-15 17:49:31

标签: reactjs redux-thunk react-thunk

让我们假设这样的事情:

handleClick = () => {
  dispatchThunkAction(this.someMethod),
}

someMethod = () => {
  //do something
}

dispatchThunkAction触发http请求。 完成后,重击动作会回调传递给它的someMethod

应该将{{1}中的someMethod设置为null,以防在HTTP(或任何其他异步操作)调用过程中发生卸载的情况?

所以,像

componentWiUnmount

以便垃圾收集器知道它可以立即将其捡起。

1 个答案:

答案 0 :(得分:2)

将方法设置为null无济于事,但是您可以创建一个名为例如的实例变量。 _isMounted,您在false中设置为componentDidUnmount,并在true中执行任何操作之前,请检查此变量是否为someMethod

class App extends React.Component {
  _isMounted = true

  handleClick = () => {
    dispatchThunkAction(this.someMethod)
  }

  someMethod = () => {
    if (!this._isMounted) {
      return
    }

    //do something
  }

  componentDidUnmount() {
    this._isMounted = false
  }  

  // ...
}