Должны ли переменные компонента Angular иметь значение null в ngOnDestroy()?

Ангулярная документация гласит

ngOnDestroy(): Очистка перед тем, как Angular уничтожит директиву / компонент. Отмените подписку Observables и отсоедините обработчики событий, чтобы избежать утечек памяти. Вызывается непосредственно перед тем, как Angular уничтожит директиву / компонент.

Некоторые разработчики говорят, что свойства компонента (переменные класса) также должны быть равны нулю, чтобы избежать утечек памяти. Это правда?

export class TestComponent implements OnInit, OnDestroy {

  public name: string;
  constructor() { }

  ngOnInit() {
    this.name = 'John';
  }

  ngOnDestroy() {
   // is this code really necessary.
   this.name = null;
  }

}

2 ответа

Нет, тебе это не нужно. Компонент просто является классом, и когда он отображается, создается экземпляр. Когда компонент уничтожается, связанный объект остается без ссылки, и при первой возможности он будет собираться мусором.

Как сказано в документации, вам нужно использовать только в тех случаях с Observables и обработчиками событий, поскольку они не будут удалены с помощью сборщика мусора, если они находятся в активном состоянии.

Отмените подписку Observables и отсоедините обработчики событий, чтобы избежать утечек памяти

Да, вам нужно это сделать. Я столкнулся с той же проблемой, когда сохранял данные в переменной и вызывал ее при переключении между разными дочерними компонентами.

Компонент в надежде, что он будет автоматически удален, но этого не произошло, данные не удалялись из этой переменной, поэтому присвойте ему значение null вngOnDestroyпомог мне.

      ngOnDestroy(){  this.home=null;}
Другие вопросы по тегам