В этой статье делается попытка объяснить, как работает MobX. Мы создадим небольшой кейс с MobX. Если вы ищете надежную документацию по MobX, вы можете перейти наофициальная документация.
Что такое Mobx.
Пояснение из официальной документации: лаконичное, легко расширяемое управление состоянием. Короче говоря, MobX может очень хорошо управлять состоянием/данными приложения, будучи лаконичным и легко расширяемым. Сначала посмотрите на картинку:
Мы создаем простое приложение, используя шаги, показанные на рисунке выше.
State
В MobX вы можете установить одно или несколько состояний, давайте сначала установим одно:
var store = mobx.observable({
counter: 0
})
Инициализируем хранилище только одними данными о состоянииcounter
. Ваш объект может иметь несколько иерархий, соответствующих нескольким различным свойствам.
Rendering
MobX отлично работает с react.js, но работает и без него. Мы используем собственный JavaScript для отображения состояния на странице:
`<div>-</div>`
function render(state) {
document.getElementById('counter').textContent = state.counter;
}
Мы получили статус и обновили страницу.
Actions
Когда происходит действие, мы можем напрямую изменить состояние:
<button id="button">Increment</button>
document.getElementById('button').addEventListener('click', function() {
store.counter = store.counter + 1
})
Когда мы нажмем кнопку, счетчик в состоянии будет увеличен на 1.
изменить состояние
Когда мы меняем состояние, мы обновляем рендеринг:
mobx.observe(store, function() {
render(store)
})
окончательный код
// html
<button id="button">Increment</button>
// JavaScript
var store = mobx.observable({
counter: 0
})
function render(state) {
document.getElementById('counter').textContent = state.counter;
}
document.getElementById('button').addEventListener('click', function() {
store.counter = store.counter + 1
})
mobx.observe(store, function() {
render(store)
})
Сравните с Redux
По сравнению с Redux, MobX кажется намного проще в написании и понимании, и вам не нужно писать много повторяющегося кода. Но цена, которая приходит с этим, заключается в том, что вы не знаете, как это работает внутри. MobX также можно написать так же, как Redux: использовать действия, создавать действия, создавать асинхронные действия и т. д., но это не обязательно. В целом, MobX — хороший выбор, если вы поддерживаете модульность кода, возможность тестирования и однонаправленный поток данных.
> Оригинал: https://bumbu.github.io/simple-mobx/