Vuex - Computed property "name" was assigned to but it has no setter
For me it was changing.
this.name = response.data;
To what computed returns so;
this.$store.state.name = response.data;
It should be like this.
In your Component
computed: {
...mapGetters({
nameFromStore: 'name'
}),
name: {
get(){
return this.nameFromStore
},
set(newName){
return newName
}
}
}
In your store
export const store = new Vuex.Store({
state:{
name : "Stackoverflow"
},
getters: {
name: (state) => {
return state.name;
}
}
}
If you're going to v-model
a computed, it needs a setter. Whatever you want it to do with the updated value (probably write it to the $store
, considering that's what your getter pulls it from) you do in the setter.
If writing it back to the store happens via form submission, you don't want to v-model
, you just want to set :value
.
If you want to have an intermediate state, where it's saved somewhere but doesn't overwrite the source in the $store
until form submission, you'll need to create such a data item.