Это потому, что свойство computed
, как следует из названия, может быть перезаписано только внутренне, и это не хранилище данных, в которое вы можете записывать. Если вы хотите заполнить свой month
из хранилища VueX и сохранить возможность записи, лучше всего его написать в виде комбинации:
- a watcher , который наблюдает за
date
и обновляет внутренние данные month
при каждом обновлении магазина
- внутренние данные, которые просто позволяют записывать и читать
month
Пример выглядит следующим образом:
// Populate internal store with state data
data: function() {
return {
month: this.date.format('M') - 1
}
},
// Map getter
computed: {
...mapGetters(['date'])
},
// Watch changes to mapped getter
watch: {
date: function(val) {
this.month = this.date.format('M') - 1
}
}
Конечно, следуя принципу СУХОЙ, вы можете абстрагировать логику в отдельный метод:
methods: {
getMonth: function(month) {
return month.format('M') - 1;
}
},
data: function() {
return {
month: this.getMonth(this.date)
}
},
computed: {
...mapGetters(['date'])
},
watch: {
date: function(val) {
this.month = this.getMonth(val)
}
}