解决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 相关文章推荐
基于jquery的下拉框改变动态添加和删除表格实现代码
Sep 12 Javascript
jQuery中创建实例与原型继承揭秘
Dec 21 Javascript
六款帮助你实现惊艳视差滚动效果的jQuery插件
Sep 14 Javascript
JavaScript中的连字符详解
Nov 28 Javascript
深入理解JavaScript中的传值与传引用
Dec 09 Javascript
使用jQuery实现验证上传图片的格式与大小
Dec 03 Javascript
基于jQuery实现响应式圆形图片轮播特效
Nov 25 Javascript
jQuery针对input的class属性写了多个值情况下的选择方法
Jun 03 Javascript
vue.extend与vue.component的区别和联系
Sep 19 Javascript
如何用webpack4.0撸单页/多页脚手架 (jquery, react, vue, typescript)
Jun 18 jQuery
vue中js判断长时间不操作界面自动退出登录(推荐)
Jan 22 Javascript
react基本安装与测试示例
Apr 27 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的安全
2006/10/09 PHP
php cli 小技巧
2013/06/03 PHP
基于PHP+Ajax实现表单验证的详解
2013/06/25 PHP
php smarty truncate UTF8乱码问题解决办法
2014/06/13 PHP
ThinkPHP3.1新特性之对Ajax的支持更加完善
2014/06/19 PHP
PHP中实现crontab代码分享
2015/03/26 PHP
PHP单例模式定义与使用实例详解
2017/02/06 PHP
CentOS 上搭建 PHP7 开发测试环境
2017/02/26 PHP
PHP implode()函数用法讲解
2019/03/08 PHP
php 的多进程操作实践案例分析
2020/02/28 PHP
通过AJAX的JS、JQuery两种方式解析XML示例介绍
2013/09/23 Javascript
解析JavaScript面向对象概念中的Object类型与作用域
2016/05/10 Javascript
获取jqGrid中选择的行的数据
2016/11/30 Javascript
nodejs判断文件、文件夹是否存在及删除的方法
2017/11/10 NodeJs
纯js实现隔行变色效果
2017/11/29 Javascript
vue 音乐App QQ音乐搜索列表最新接口跨域设置方法
2018/09/25 Javascript
浅析vue中的provide / inject 有什么用处
2019/11/10 Javascript
使用PYTHON创建XML文档
2012/03/01 Python
Python中的字典遍历备忘
2015/01/17 Python
使用Python读写及压缩和解压缩文件的示例
2016/07/08 Python
利用python numpy+matplotlib绘制股票k线图的方法
2019/06/26 Python
Django之choices选项和富文本编辑器的使用详解
2020/04/01 Python
Python3读取和写入excel表格数据的示例代码
2020/06/09 Python
如何用PyPy让你的Python代码运行得更快
2020/12/02 Python
《口技》教学反思
2014/02/21 职场文书
《伯牙绝弦》教学反思
2014/03/02 职场文书
《夹竹桃》教学反思
2014/04/20 职场文书
2014年健康教育工作总结
2014/11/20 职场文书
2014年评职称工作总结
2014/11/20 职场文书
2014年幼儿园小班工作总结
2014/12/04 职场文书
2015年读书月活动总结
2015/03/26 职场文书
2015年社区计生工作总结
2015/04/21 职场文书
水浒传读书笔记
2015/06/25 职场文书
浅谈node.js中间件有哪些类型
2021/04/29 Javascript
如何有效防止sql注入的方法
2021/05/25 SQL Server
基于python定位棋子位置及识别棋子颜色
2021/07/26 Python