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>

     

  • 相关阅读:
    Python——thread
    Python——dummy_thread( _dummy_thread in Python 3.+)
    Python——pyiso8601
    Python——os(一)进程参数
    Python——eventlet.hubs
    Python——eventlet.backdoor
    Python——eventlet.greenthread
    解决zabbix可用性为灰色状态
    实时查看docker容器日志
    docker pull 报错Get https://xxx.xxx.xxx.xxx:5000/v1/_ping: http: server gave HTTP response
  • 原文地址:https://www.cnblogs.com/shouke/p/13170557.html
Copyright © 2011-2022 走看看