代码之家  ›  专栏  ›  技术社区  ›  ekjcfn3902039

计算属性已分配给,但它没有setter

  •  0
  • ekjcfn3902039  · 技术社区  · 5 年前

    什么是正确的语法/钩子,使这个对myval有效?

    我的代码如下:

    <v-item-group v-model="myVal" ...
    
    import { mapActions, mapGetters } from 'vuex'; 
    export default {
      computed : {
         ...mapActions({
           myVal: 'myModulePath/setMyVal'
         }),
         ...mapGetters({
           myVal: 'myModulePath/getMyVal'
         }),
      },
    }
    

    商店看起来像:

    actions: {
      setMyVal({commit}, value){commit('someMutation',value);}
    getters: {
      getMyVal: state => { return state.myVal;}
    

    我不知道如何连接它,所以“setter”工作,错误消息消失。

    我也试过这样做,但没用:

    ...mapState('myModulePath', ['myVal']) 
    
    2 回复  |  直到 5 年前
        1
  •  1
  •   jfadich    5 年前

    需要告诉Vue组件在为计算属性分配新值时要做什么

    computed: {
         myVal: {
            get: () => this.$state.store.getters.myModulePath.getMyVal,
            set: (value) => this.$state.commit('someMutation', value )
        }
      }
    

    注意,我使用setter而不是action。在计算属性设置器中使用操作是一个坏主意,因为操作通常是异步的,并且在稍后调试计算属性时可能会导致头痛。

        2
  •  1
  •   Roy J    5 年前

    你需要定义一个 computed with a get and a set function . 也许吧:

    export default {
      computed : {
         myVal: {
            get() { return this.$store.getters.getMyVal; },
            set(newValue) { this.$store.dispatch('setMyVal', newValue); }
         }
      },
    }