Из ссылки API Vuex для диспетчеризация методы экземпляра:
Возвращает Promise, который разрешает все обработчики инициируемых действий.
Так называется dispatch
возвращает Обещание .Для получения данных внутри компонента это обещание должно быть разрешено.
Вы можете изменить метод компонента следующим образом:
// using async/await
async unsetSelected() {
try {
let some = await this.$store.dispatch('user/selectedDevice', null)
console.log(some)
} catch (error) {
// handle error
}
}
// using Promise API
unsetSelected() {
this.$store.dispatch('user/selectedDevice', null)
.then((some) => {
console.log(some)
})
.catch((error) => {
// handle error
})
}
Кроме того, selectedDevice
не возвращает никаких данных, поэтому some
(или ответ) от разрешенного обещания будет undefined
для примера кода, указанного в вопросе.
Чтобы исправить это, действие хранилища должно иметь оператор return
с необходимыми данными для возврата в компонент.
Хотя, следуя архитектуре Vuex, было бы предложено отобразить состояние / получатели , значения которых будут реактивно обновляться после фиксации изменения состояния.