在... mapState()中定义的计算属性没有设置器

时间:2019-06-18 11:46:48

标签: vue.js vuex nuxt

在我的Nuxt应用程序中,我将使用从mapState帮助器中的商店中检索的数据来初始化计算属性,但是我还需要根据某些用户操作来修改这些计算属性的值。 / p>

我不能这样做,因为在使用该代码时出现“没有设置器”错误:

computed: {
    ...mapState({
      monRaw: state => state.currentWeek

我试图将setter定义为无效,并且代码也没有太大意义:

computed: {
      ...mapState({
            get: function (state) {
              return state.currentWeek
            },
            set: function (state, data) {
              state.currentWeek = data
            }

使用mapState()定义时,是否根本无法更改计算属性的值?

1 个答案:

答案 0 :(得分:0)

mapState是一种便利功能,可在vuex存储中的相同键下提供计算属性的映射。它提供对那些属性的只读访问。由于要使用更新,因此必须放弃mapstate并定义您自己的计算的getter / setter,如下所示:

computed: {
  currentWeek: {
    get() {
      return this.$store.state.currentWeek;
    },
    set(v) {
      this.$store.commit('updateCurrentWeek', v);
    } 
  }
...
}

显然,updateCurrentWeek必须在您的vuex存储区的mutation部分中定义。