Вызов действия Vuex через Vue Computed Setter - PullRequest
0 голосов
/ 26 сентября 2018

У меня есть значение для счетчика, хранящегося в Firebase.

{
  name: 'sheep',
  total: 0
}

Я синхронизирую это со значением в состоянии Vuex, используя действие, вызывающее Firebase.

loadedCounter ({ commit }) {
  commit('setLoading', true)
  firebase.database().ref('animals').on('value', (snapshot) => {
    let counter = []
    let obj = snapshot.val()
    for (let key in obj) {
      counter.push({
        name: obj[key].name,
        total: obj[key].total
      })
    }
    commit('setLoadedCounter', test)
    commit('setLoading', false)
  })
},

Затем я используюcomputed свойство в моем компоненте Vue, чтобы получить значение.Получатель работает.

computed: {
sheepCounter: {
  get () {
    let test = this.$store.getters.getSheep
    return test.total
  },
  set (value) {
    this.$store.commit('updateSheep', value)
  }
}

Однако установщик выдает ошибки.Я получаю эту ошибку в консоли:

[vuex] неизвестный тип мутации: updateSheep

Я считаю, что проблема заключается в том, что набор может ссылаться только на мутацию, а updateSheep является action.Но, насколько я понимаю, это должно быть действие, потому что это асинхронный код.

updateSheep ({commit}, payload) {
  firebase.database().ref('animals').child('sheep').update({total: payload})
},

Как я могу установить данные, используя набор свойств компьютера, который синхронизируется с firebase?

1 Ответ

0 голосов
/ 26 сентября 2018

Я смог исправить это, отправив действие.Я пытался совершить действие.Диспетчеризация для действий:

this.$store.dispatch('updateSheep', value)

не

this.$store.commit('updateSheep', value)
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...