Доступ к этому. $ FireStore в действии vuex (Nuxt. js) - PullRequest
0 голосов
/ 04 апреля 2020

Здесь указано, что $ fireStore может быть доступно внутри vuex action :

async randomVuexAction({ commit, state, rootState }, userId) {
  const ref = this.$fireStore.collection('users').doc(userId)
  ...
}

Проблема: После запуска действия в store/index.js:

addItem: ({ commit, getters }, itemName) => {
  const item = { name: itemName }
  this.$fireStore.collection('items').add(item).then((res) => {})
}

Я получаю сообщение об ошибке: Cannot read property '$fireStore' of undefined. Вообще говоря, console.log(this) внутри всех действий, кроме nuxtServerInit() - дает undefined. Так возможно ли использовать $fireStore в vuex или документация вводит в заблуждение?

1 Ответ

2 голосов
/ 04 апреля 2020

Попробуйте удалить обозначение стрелки для вашего действия (потому что «this» не означает то же самое, что обозначение стрелки), т.е.

addItem ({ commit, getters }, itemName) {
  const item = { name: itemName }
  this.$fireStore.collection('items').add(item).then((res) => {})
}

Примечание: то же самое относится к вычисляемым свойствам и методам в Vue компоненты. Следуйте документам, не меняйте ничего ради этого.

...