Actions
Actions are the way to mutate the core state of your application. In fact, MobX strongly recommends that you always use actions and never do any mutations outside of an action. It even goes to the extent of enforcing this requirement across your app if you configure
MobX with: { enforceActions: true }
:
import { configure } from 'mobx';
configure({ enforceActions: true });
Let the preceding lines of code be the starting point of your MobX-driven React app. It's obvious that there are some benefits to using actions for all state-mutation. But so far, it hasn't been very clear. Let's drill a little deeper to uncover these hidden benefits.
Note
configure({ enforceActions: true })
isn't the only option available for guarding state-mutation. There is a stricter form with { enforceActions: 'strict' }
. The difference is subtle but worth calling out. When set to true
, you are still allowed to make stray mutations outside of an action, if there are no observers tracking the mutating observable...