zoukankan      html  css  js  c++  java
  • Vue 给mapState中定义的属性赋值报错的解决方案

    Vue mapState中定义的属性赋值报错的解决方案

    by:授客 QQ1033553122

    1.   实践环境

    Vue 2.9.6

     

    2.   问题描述

    <script>

    import { mapState } from 'vuex';

     

    export default {

        name: "displayCount",

        computed: {

            ...mapState({

                ...略

                count: state => state.a.count

            })

     

        },

     

        methods: {

            increaseCount () {

                this.count = this.count + 1

            }

        }

    };

    </script>

     

    <style>

    </style>

     

    如上,我们希望在执行increaseCount函数时,给mapstate函数中映射定义的this.count赋值,给该值增加1,结果,提示

    [Vue warn]: Computed property "count" was assigned to but it has no setter.

     

    3.   解决方案1

    如下,把属性“移出mapState”,然后为属性新增get,set方法,分别用于获取值和改变值(按store状态管理规定的方式)

     

    <script>

    import { mapState } from 'vuex';

     

    export default {

        name: "displayCount",

       

        computed: {

            ...mapState({

    ...略

               

            }),

            count: {

                get() {

                    return this.$store.state.a.count;

                },

                set(val) {

                    this.$store.commit("increaseCount", val);

                }

            }

     

        },

     

        methods: {

            increaseCount () {

                this.count = this.count + 1

            }

        }

    };

    </script>

     

    注意:this.$store.commit("increaseCount", val);中的increaseCount方法名称,并不是methods中定义的方法名称,而是store中定义的方法

     

    4.   解决方案2

    通过对比当前属性值和store状态值,然后根据比较结果,决定是否根据store状态管理规则更新状态值。

    <script>

    import { mapState } from 'vuex';

     

    export default {

        name: "displayCount",

       

        computed: {

            ...mapState({

                count: state => state.a.count

            })

     

        },

     

        methods: {

            increaseCount () {

                if (this.count == this.$store.state.a.count) {

                    this.$store.commit("increaseCount", this.count+1);

                }

            }

        }

    };

    </script>

     

  • 相关阅读:
    java语言程序设计与数据结构(基础版)第三章**3.4
    贪心练习:阿里巴巴与十四大盗————背包问题
    贪心练习最优装载问题
    贪心训练均分纸牌Noip2002
    排队打水问题(信息学奥赛一本通贪心算法)
    PAT甲题题解-1040. Longest Symmetric String (25)-求最长回文子串
    PAT甲题题解-1039. Course List for Student (25)-建立映射+vector
    PAT甲题题解-1038. Recover the Smallest Number (30)-排序/贪心,自定义cmp函数的强大啊!!!
    PAT甲题题解-1037. Magic Coupon (25)-贪心,水
    PAT甲题题解-1036. Boys vs Girls (25)-找最大最小,大水题
  • 原文地址:https://www.cnblogs.com/shouke/p/13170557.html
Copyright © 2011-2022 走看看