Un action
est également transaction
, ce qui signifie que toute valeur dérivée des observables que vous modifiez dans l'action sera recalculée après la fin du action
. Si vous n'emballez pas la fonction dans un action
, les valeurs dérivées peuvent être calculées plusieurs fois.
Exemple - Recalcul après l'action (JS Bin)
@observer
class App extends Component {
@observable x = 'a';
@observable y = 'b';
@computed get z() {
console.log('computing z...');
return `${this.x} ${this.y}`;
}
onClick = action(() => {
this.x = 'c';
this.y = 'd';
});
render() {
return <div onClick={this.onClick}> {this.z} </div>;
}
}
Exemple - Recalcul de suite (JS Bin)
@observer
class App extends Component {
@observable x = 'a';
@observable y = 'b';
@computed get z() {
console.log('computing z...');
return `${this.x} ${this.y}`;
}
onClick =() => {
this.x = 'c';
this.y = 'd';
};
render() {
return <div onClick={this.onClick}> {this.z} </div>;
}
}