Нужно ли очищать ссылку на метод компонента React в компоненте unmount? - PullRequest
0 голосов
/ 15 февраля 2019

давайте предположим, что-то вроде этого:

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

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

dispatchThunkAction запускает HTTP-запрос.когда действие выполнено, thunk вызывает обратно someMethod, которые ему передаются.

следует someMethod установить на null в componentWiUnmount, если размонтирование происходит в середине http (или любой другой асинхронной операции)операция) вызов?

так, как

componentWillUnmount() {
  this.someMethod = null;
}

, чтобы сборщик мусора знал, что он может немедленно его забрать.

1 Ответ

0 голосов
/ 15 февраля 2019

Установка метода на 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
  }  

  // ...
}
...