Introduction to MobX
MobX is a simple, scalable and powerful state management library for JavaScript applications. It makes state management simple and extensible by transparently applying functional reactive programming (TFRP).
Getting Started with MobX
Let’s install MobX and mobx-react-lite for React applications:
npm install mobx mobx-react-lite
Basic Concepts and APIs
Observable State
In MobX, observable
is a way to define state that can be observed for changes:
import { observable } from 'mobx';
const appState = observable({
timer: 0
});
Actions
Actions are used to modify the state:
import { action } from 'mobx';
const incrementTimer = action(() => {
appState.timer += 1;
});
Computed Values
Computed values automatically derive new values from the state:
import { computed } from 'mobx';
const time = computed(() => `Time: ${appState.timer}s`);
Reactions
Reactions perform side-effects in response to state changes:
import { reaction } from 'mobx';
reaction(
() => appState.timer,
timer => console.log(`Timer updated: ${timer}`)
);
Using MobX in a React Application
Observer Components
Wrap a component with observer
to make it reactive:
import React from 'react'; import { observer } from 'mobx-react-lite';
const TimerView = observer(({ appState }) => (
{appState.timer}
));
Full Application Example
Here’s a full example of using MobX in a React application:
import React, { useEffect } from 'react'; import ReactDOM from 'react-dom'; import { observable, action } from 'mobx'; import { Observer, useLocalObservable } from 'mobx-react-lite';
const Timer = () => {
const appState = useLocalObservable(() => ({
timer: 0,
increment: action(() => {
appState.timer += 1;
})
}));
useEffect(() => {
const interval = setInterval(appState.increment, 1000);
return () => clearInterval(interval);
}, [appState]);
return (
{() => Timer: {appState.timer}s}
);
};
ReactDOM.render( , document.getElementById('root'));
With the above example, a timer is implemented and every second the state updates and reflects in the UI instantly.
Conclusion
MobX is an excellent choice for state management in modern web development due to its simplicity and flexibility. By leveraging observables, actions, computed values, and reactions, developers can build highly responsive and maintainable applications.
Hash: 79f62c0111c818441d2a734855a5a69f5a6356385e31b57b0daf699179a22928