解决Vue 给mapState中定义的属性赋值报错的问题


Posted in Javascript onJune 22, 2020

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>

总结

到此这篇关于解决Vue 给mapState中定义的属性赋值报错的问题的文章就介绍到这了,更多相关vue给mapState属性赋值内容请搜索三水点靠木以前的文章或继续浏览下面的相关文章希望大家以后多多支持三水点靠木!

Javascript 相关文章推荐
ExtJs事件机制基本代码模型和流程解析
Oct 24 Javascript
JS隐藏参数post传值实例
Apr 18 Javascript
JavaScript Array对象扩展indexOf()方法
May 09 Javascript
Bootstrap每天必学之栅格系统(布局)
Nov 25 Javascript
jQuery实现页面评论栏中访客信息自动填写功能的方法
May 23 Javascript
jQuery ajax动态生成table功能示例
Jun 14 jQuery
基于jquery日历价格、库存等设置插件
Jul 05 jQuery
基于Vue过渡状态实例讲解
Sep 14 Javascript
微信小程序实现顶部导航特效
Jan 28 Javascript
javascript设计模式 ? 工厂模式原理与应用实例分析
Apr 09 Javascript
原生js+canvas实现下雪效果
Aug 02 Javascript
微信小程序 根据不同用户切换不同TabBar
Apr 21 Javascript
支付宝小程序实现省市区三级联动
Jun 21 #Javascript
微信小程序实现canvas分享朋友圈海报
Jun 21 #Javascript
微信小程序实现选择地址省市区三级联动
Jun 21 #Javascript
小程序Scroll-view上拉滚动刷新数据
Jun 21 #Javascript
jQuery 移除事件的方法
Jun 20 #jQuery
vue引入静态js文件的方法
Jun 20 #Javascript
详解Vue之计算属性
Jun 20 #Javascript
You might like
php 分页类 扩展代码
2009/06/11 PHP
IIS下PHP连接数据库提示mysql undefined function mysql_connect()
2010/06/04 PHP
PHP 登录记住密码实现思路
2013/05/07 PHP
php中数字0和空值的区别分析
2014/06/05 PHP
php数组添加元素方法小结
2014/12/20 PHP
php字符串比较函数用法小结(strcmp,strcasecmp,strnatcmp及strnatcasecmp)
2016/07/18 PHP
通过代码实例解析PHP session工作原理
2020/12/11 PHP
js data日期初始化的5种方法
2013/12/29 Javascript
jQuery分别获取选中的复选框值的示例
2014/06/17 Javascript
教你如何自定义百度分享插件以及bshare分享插件的分享按钮
2014/06/20 Javascript
jQuery表单验证功能实例
2015/08/28 Javascript
js+CSS实现模拟华丽的select控件下拉菜单效果
2015/09/01 Javascript
angularjs学习笔记之简单介绍
2015/09/26 Javascript
PassWord输入框代码分享
2016/06/07 Javascript
JavaScript递归算法生成树形菜单
2017/08/15 Javascript
基于Koa(nodejs框架)对json文件进行增删改查的示例代码
2019/02/02 NodeJs
vue配置接口域名方法总结
2019/05/12 Javascript
基于canvas实现手写签名(vue)
2020/05/21 Javascript
Python 学习笔记
2008/12/27 Python
浅谈python内置变量-reversed(seq)
2017/06/21 Python
Python使用Scrapy保存控制台信息到文本解析
2017/12/27 Python
Python实现线程状态监测简单示例
2018/03/28 Python
python通过zabbix api获取主机
2018/09/17 Python
Python日志logging模块功能与用法详解
2020/04/09 Python
Python return语句如何实现结果返回调用
2020/10/15 Python
PyTorch 中的傅里叶卷积实现示例
2020/12/11 Python
利用python绘制正态分布曲线
2021/01/04 Python
英国团购网站:Groupon英国
2017/11/28 全球购物
南非最大的在线时尚商店:Zando
2019/07/21 全球购物
法制宣传月活动总结
2014/04/29 职场文书
技校毕业生自荐书
2014/05/23 职场文书
2014年重阳节活动策划方案书
2014/09/16 职场文书
人大代表选举标语
2014/10/07 职场文书
2014幼儿教师个人工作总结
2014/12/03 职场文书
2015中秋节晚会开场白
2015/07/30 职场文书
2016党员读书思廉心得体会
2016/01/23 职场文书