Сначала в React у нас был Flux. Затем мы перешли на redux. Теперь мы переходим к MobX.

Vue начал с Vuex, который является эквивалентом redux. Однако Vue-Stash - это MobX для Vue.

Настроить магазин очень просто, и вы можете напрямую устанавливать значения, не выполняя действия = ›церемония сокращения. Он хорошо организован и делает магазин таким, каким он должен быть, и о нем легче рассуждать.

Vue 2 запрашивает, чтобы вы не обращались к родительскому состоянию напрямую через дочерние компоненты, потому что всякий раз, когда вы вносите изменения в родительское состояние, он повторно отображает дочерние реквизиты, которые перезагружают дочерний компонент, и поток данных труднее рассуждать.

Однако Vue-Stash как бы строит это вокруг. Вы подключаете одно центральное хранилище к данным корневого компонента Vue.

import Vue from 'vue'
import VueStash from 'vue-stash'
Vue.use(VueStash)
const app = new Vue({
  el: '#app',
  router: router,
  data: { 
    store: {
      message: 'Hi',
      age: 30
    } 
  }
})

Затем он делает это хранилище напрямую доступным для всех ваших дочерних компонентов с помощью

this.$store 

this. $ store - это ссылка на

this.$root.store

Вы устанавливаете настраиваемую опцию в своих дочерних компонентах, чтобы выбрать, какие свойства магазина вы хотите наблюдать.

store: ['message', 'age']

Для каждого выбранного вами свойства Vue-Stash создаст вычисляемые свойства, используя имена свойств, которые можно читать и записывать из this. $ Store.propertyName.

В своем шаблоне вы всегда можете сделать

{{$store.message}}

Но потому что ты это сделал

store: ['message']

Вы можете использовать

{{message}}

Если вы хотите изменить значение сообщения, вы можете напрямую отредактировать его.

this.message = ‘Another message’

Для этого используются сеттеры. $ Store.message.

Это означает, что вам не нужно писать действия и редукторы. Вы можете просто написать так, как вы это делаете интуитивно, и у вас будет централизованный магазин. Об этом все еще легко рассуждать.