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
Dedication
Packt Upsell
Foreword
Contributors
Preface
Index

Summary


The mental model for MobX apps is geared towards thinking about the observable state. This itself is divided into the minimal core state and a derived state. Derivations are how we handle the various projections of the core state onto the UI and places where we need to perform domain-specific operations. Before adding more core state, think about whether it can be rolled in as derived state. Only when that is not possible should you introduce new core state.

We saw how an async action is quite similar to a regular action without much ceremony. The only caveat is when you have configured MobX to enforceActions. In that case, you have to wrap state mutations in the async code inside runInAction(). When there are several async parts within the action, flow() is a better option. It takes a generator function (denoted by function*(){ }) that is interspersed with yield to the various promise-based calls.

reaction() and autorun() offer extra options to control their behavior. They share most...