Computed property “xxx” was assigned to but it has nosetter:计算属性“inputValue”被赋值,但它没有setter。

原因:

  1. 组件中v-model=“XXX”,而XXX是vuex state中的某个变量
  2. vuex中是单项流,v-model是vue中的双向绑定,但是在computed中只通过get获取参数值,没有set无法改变参数值

解决:

  1. vuex公共变量:在computed中添加get和set
computed: {
    // ...mapState(['inputValue']),
    inputValue: {
      get () {
        return this.$store.state.inputValue
      },
      set (val) {
        this.$store.commit(['setInputValue', val])
      }
    }
  },

普通变量:

computed:{
    currentStep:{
        get(){
             return this.stepMap
        },
        set(v){
            this.stepMap = v
        }
        // set方法只写下面这一行也是可以的
        // set(){}
    }
}   

2.【推荐】 将 v-model 改成 :value

// 注意@change绑定的方法不要加小括号
<a-input placeholder="请输入任务":value="inputValue" @change="handleInputChange"/>
-------------------------------------
computed: {
    ...mapState(['inputValue'])
  },
Logo

前往低代码交流专区

更多推荐