解决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 相关文章推荐
清空上传控件input file的值
Jul 03 Javascript
JS在可编辑的div中的光标位置插入内容的方法
Nov 20 Javascript
jquery+json实现数据二级联动的方法
Nov 28 Javascript
js与jQuery实现checkbox复选框全选/全不选的方法
Jan 05 Javascript
利用JS判断字符串是否含有数字与特殊字符的方法小结
Nov 25 Javascript
JS焦点图,JS 多个页面放多个焦点图的实例
Dec 08 Javascript
Bootstrap jquery.twbsPagination.js动态页码分页实例代码
Feb 20 Javascript
angularjs+bootstrap实现自定义分页的实例代码
Jun 19 Javascript
关于jquery中attr()和prop()方法的区别
May 28 jQuery
react+redux仿微信聊天界面
Jun 21 Javascript
vue全屏事件开发详解
Jun 17 Javascript
浅谈webpack构建工具配置和常用插件总结
May 11 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
萌王史莱姆”萌王性别尴尬!那“萌战”归女组还是男?
2018/12/17 日漫
mysql5写入和读出乱码解决
2006/11/25 PHP
PHP定时任务延缓执行的实现
2014/10/08 PHP
PHP动态柱状图实现方法
2015/03/30 PHP
php实现阿拉伯数字和罗马数字相互转换的方法
2015/04/17 PHP
thinkPHP+PHPExcel实现读取文件日期的方法(含时分秒)
2016/07/07 PHP
php生成二维码不保存服务器还有下载功能的实现代码
2018/08/09 PHP
Javascript 网页水印(非图片水印)实现代码
2010/03/01 Javascript
jquery的index方法实现tab效果
2011/02/16 Javascript
利用JS自动打开页面上链接的实现代码
2011/09/25 Javascript
js限制textarea每行输入字符串长度的代码
2012/10/31 Javascript
引用 js在IE与FF之间的区别详细解析
2013/11/20 Javascript
jQuery中事件对象e的事件冒泡用法示例介绍
2014/04/25 Javascript
如何获取网站icon有哪些可行的方法
2014/06/05 Javascript
了不起的node.js读书笔记之mongodb数据库交互
2014/12/22 Javascript
深入浅析vue组件间事件传递
2017/12/29 Javascript
ES6 中可以提升幸福度的小功能
2018/08/06 Javascript
vuejs点击class变化的实例
2018/09/05 Javascript
Vue实现滑动拼图验证码功能
2019/09/15 Javascript
[10:42]Team Liquid Vs Newbee
2018/06/07 DOTA
在Linux系统上安装Python的Scrapy框架的教程
2015/06/11 Python
Python 多线程的实例详解
2017/09/07 Python
python在线编译器的简单原理及简单实现代码
2018/02/02 Python
python打包exe开机自动启动的实例(windows)
2019/06/28 Python
Django中FilePathField字段的用法
2020/05/21 Python
Python如何生成xml文件
2020/06/04 Python
美国最大的珠宝商之一:Littman Jewelers
2016/11/13 全球购物
语文教育专业应届生求职信
2013/11/23 职场文书
周年庆典邀请函范文
2014/01/23 职场文书
聘用意向书
2014/07/29 职场文书
十佳党员事迹材料
2014/08/28 职场文书
生产工厂门卫岗位职责
2014/09/26 职场文书
2015年幼儿园德育工作总结
2015/05/25 职场文书
2016年过年放假安排通知
2015/08/18 职场文书
五一放假通知怎么写
2015/08/18 职场文书
Java异常处理try catch的基本用法
2021/12/06 Java/Android