Book Image

MobX Quick Start Guide

By : Pavan Podila, Michel Weststrate
Book Image

MobX Quick Start Guide

By: Pavan Podila, Michel Weststrate

Overview of this book

MobX is a simple and highly scalable state management library in JavaScript. Its abstractions can help you manage state in small to extremely large applications. However, if you are just starting out, it is essential to have a guide that can help you take the first steps. This book aims to be that guide that will equip you with the skills needed to use MobX and effectively handle the state management aspects of your application. You will first learn about observables, actions, and reactions: the core concepts of MobX. To see how MobX really shines and simplifies state management, you'll work through some real-world use cases. Building on these core concepts and use cases, you will learn about advanced MobX, its APIs, and libraries that extend MobX. By the end of this book, you will not only have a solid conceptual understanding of MobX, but also practical experience. You will gain the confidence to tackle many of the common state management problems in your own projects.
Table of Contents (17 chapters)
Title Page
Packt Upsell

Controlling observability

MobX, by default, applies deep observability on your objects, arrays, and maps. This allows you to see changes happening at any level in the observable tree. Although this a great default to start with, at some point, you will have to pay more attention to limit the observability. Cutting down on the observability also improves performance as there are fewer things to track from the point of view of MobX.

There are two distinct ways in which you can control observability:

  • By using the various @decorators inside classes
  • By using the decorate() API


Using @decorators

Decorators are a syntactic feature that allow you to attach behavior to a class and its fields. We have already seen this in Chapter 3, A React App with MobX, so the following code should be very familiar:

class BookSearchStore {
@observable term = 'javascript';
@observable status = '';
@observable.shallow results = [];

@observable totalCount = 0;

Using the @observable decorator, you can make properties of...