Angular 2
Ottimizzazione del rendering con ChangeDetectionStrategy
Ricerca…
Default vs OnPush
Considerare il seguente componente con un ingresso myInput
e un valore interno chiamato someInternalValue
. Entrambi sono usati nel modello di un componente.
import {Component, Input} from '@angular/core';
@Component({
template:`
<div>
<p>{{myInput}}</p>
<p>{{someInternalValue}}</p>
</div>
`
})
class MyComponent {
@Input() myInput: any;
someInternalValue: any;
// ...
}
Per impostazione predefinita, changeDetection:
proprietà nel decoratore del componente sarà impostata su ChangeDetectionStrategy.Default
; implicito nell'esempio. In questa situazione, qualsiasi modifica a uno qualsiasi dei valori nel modello attiverà un re-rendering di MyComponent
. In altre parole, se cambio myInput
o someInternalValue
angolo 2 eserciterà energia e re-render il componente.
Supponiamo, tuttavia, che vogliamo solo ri-renderizzare quando cambiano gli input. Considera il seguente componente con changeDetection:
impostato su 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;
// ...
}
Impostando changeDetection:
su ChangeDetectionStrategy.OnPush
, MyComponent
verrà ri-renderizzato solo quando i suoi input cambiano. In questo caso, myInput
dovrà ricevere un nuovo valore dal suo genitore per attivare un re-rendering.