Suche…


Standard vs OnPush

Betrachten Sie die folgende Komponente mit einer Eingabe myInput und einem internen Wert namens someInternalValue . Beide werden in der Vorlage einer Komponente verwendet.

import {Component, Input} from '@angular/core';

@Component({
  template:`
  <div>
    <p>{{myInput}}</p>
    <p>{{someInternalValue}}</p>
  </div>
  `
})
class MyComponent {
  @Input() myInput: any;

  someInternalValue: any;

  // ...
}

Standardmäßig wird die changeDetection: im Komponentendekorator auf ChangeDetectionStrategy.Default . im Beispiel implizit. In dieser Situation lösen alle Änderungen an den Werten in der Vorlage ein erneutes Rendern von MyComponent . Mit anderen Worten, wenn ich myInput oder someInternalValue Winkel 2, wird Energie someInternalValue und die Komponente erneut someInternalValue .

Nehmen wir jedoch an, dass wir nur dann neu rendern möchten, wenn sich die Eingaben ändern. Berücksichtigen Sie die folgende Komponente mit changeDetection: ChangeDetectionStrategy.OnPush

import {Component, ChangeDetectionStrategy, Input} from '@angular/core';

@Component({
  changeDetection: ChangeDetectionStrategy.OnPush
  template:`
  <div>
    <p>{{myInput}}</p>
    <p>{{someInternalValue}}</p>
  </div>
  `
})
class MyComponent {
  @Input() myInput: any;

  someInternalValue: any;

  // ...
}

Durch Festlegen von changeDetection: auf ChangeDetectionStrategy.OnPush wird MyComponent nur dann neu MyComponent , wenn sich die Eingaben ändern. In diesem Fall muss myInput einen neuen Wert von seinem übergeordneten myInput erhalten, um ein erneutes Rendern auszulösen.



Modified text is an extract of the original Stack Overflow Documentation
Lizenziert unter CC BY-SA 3.0
Nicht angeschlossen an Stack Overflow