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

Posted

技术标签:

【中文标题】...mapState() 中定义的计算属性没有设置器【英文标题】:Computed property defined within ...mapState() has no setter 【发布时间】:2019-11-01 01:22:20 【问题描述】:

在我的Nuxt 应用程序中,我正在使用从mapState 帮助程序中的存储检索的数据初始化计算属性,但是我还需要在某些用户操作时修改这些计算属性的值。

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

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

我尝试定义 setter 无济于事,代码也没有太大意义:

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

当使用 mapState() 定义时,是否根本不可能更改计算属性的值?

【问题讨论】:

看看:***.com/questions/44272405/mapstate-with-setter 谢谢,您的网址中确实存在正确答案 【参考方案1】:

mapState 是一个方便的函数,它提供了 vuex 存储中相同键下的计算属性的映射。它提供对这些属性的只读访问。由于您想使用更新,您将不得不放弃 mapstate 并定义您自己的计算 getter/setter,如下所示:

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

显然updateCurrentWeek 必须在您的 vuex 存储的突变部分中定义。

【讨论】:

以上是关于...mapState() 中定义的计算属性没有设置器的主要内容,如果未能解决你的问题,请参考以下文章

mapState辅助函数

vuex的mapState和mapGetter

在 Vuex 中使用带有 mapState、mapMutation 的 get/set Computed 属性

vuex - 辅助函数学习

VueJS - 重新加载页面后无法将值从 mapState 分配给数据属性

Vuex mapState的基本使用