- MobX Quick Start Guide
- Pavan Podila Michel Weststrate
- 385字
- 2021-08-05 10:34:24
Better syntax with decorators
All of our examples so far have used the ES5 API of MobX. However, there is a special form of the API, which gives us a very convenient way of expressing the observables. This is made possible with the @decorator syntax.
The decorator syntax is only available for classes and can be used for class declarations, properties and methods. Here is an equivalent Cart observable, expressed with decorators:
class Cart {
@observable.shallow items = [];
@observable modified = new Date();
@computed get description() {
switch (this.items.length) {
case 0:
return 'There are no items in the cart';
case 1:
return 'There is one item in the cart';
default:
return `There are ${this.items.length} items in the
cart`;
}
}
}
Notice the use of decorators to decorate the observable properties. The default @observable decorator does deep observation on all the properties of the value. It is actually a shorthand for using @observable.deep.
Similarly, we have the @observable.shallow decorator, which is a rough equivalent of setting the { deep: false } option on the observable. It works for objects, arrays, and maps. We will cover the more technically correct ES5 equivalent of observable.shallow in Chapter 4 , Crafting the Observable Tree.
The snippet below shows the items and metadata properties, marked as shallow observables:
class Cart {
// Using decorators
@observable.shallow items = [];
@observable.shallow metadata = {};
}
We will be covering a few more decorators in a later chapter, but we did not want to wait until then to discuss the decorator syntax. We definitely think you should pick decorators as your first choice for declaring observables. Note that they are only available inside classes. However, the vast majority of the time, you will be using classes to model your observable tree, so decorators greatly help in making it more readable.
- C++黑客編程揭秘與防范
- 工業(yè)控制網(wǎng)絡(luò)安全技術(shù)與實踐
- 電子政務(wù)效益的經(jīng)濟分析與評價
- 物聯(lián)網(wǎng)檢驗檢測技術(shù)
- 萬物互聯(lián):蜂窩物聯(lián)網(wǎng)組網(wǎng)技術(shù)詳解
- 農(nóng)產(chǎn)品物聯(lián)網(wǎng)研究與應(yīng)用
- Go Web Scraping Quick Start Guide
- 物聯(lián)網(wǎng)時代
- Learning Swift(Second Edition)
- Mastering Dart
- SAE原理與網(wǎng)絡(luò)規(guī)劃
- 無線傳感器網(wǎng)絡(luò)定位技術(shù)
- 局域網(wǎng)組成實踐
- TCP/IP基礎(chǔ)(第2版)
- Selenium WebDriver 3 Practical Guide