解决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 相关文章推荐
eval与window.eval的差别分析
Mar 17 Javascript
jQuery EasyUI API 中文文档 - NumberSpinner数值微调器使用介绍
Oct 21 Javascript
基于jquery的可多选的下拉列表框
Jul 20 Javascript
JavaScript高级程序设计(第3版)学习笔记4 js运算符和操作符
Oct 11 Javascript
JavaScript的setAttribute兼容性问题解决方法
Nov 11 Javascript
Document.location.href和.replace的区别示例介绍
Mar 04 Javascript
Javascript获取当前日期的农历日期代码
Oct 08 Javascript
innerHTML中标签可以换行的方法汇总
Aug 14 Javascript
jQuery支持添加事件的日历特效代码分享(3种样式)
Aug 24 Javascript
详解AngularJS中module模块的导入导出
Dec 10 Javascript
学习使用Bootstrap页面排版样式
May 11 Javascript
详解jquery选择器的原理
Aug 01 jQuery
支付宝小程序实现省市区三级联动
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配置参数总结
2013/06/14 PHP
浅谈php安全性需要注意的几点事项
2014/07/17 PHP
php中使用session防止用户非法登录后台的方法
2015/01/27 PHP
Laravel使用支付宝进行支付的示例代码
2017/08/16 PHP
php实现生成带二维码图片并强制下载功能
2018/02/24 PHP
javascript 学习之旅 (2)
2009/02/05 Javascript
jQuery setTimeout()函数使用方法
2013/04/07 Javascript
jQuery获得IE版本不准确webbrowser的解决方法
2014/02/23 Javascript
jquery控制页面部分刷新的方法
2015/06/24 Javascript
JavaScript实现的圆形浮动标签云效果实例
2015/08/06 Javascript
浅析JavaScript函数的调用模式
2016/08/10 Javascript
chrome下判断点击input上标签还是其余标签的实现方法
2016/09/18 Javascript
javascript阻止事件冒泡和浏览器的默认行为
2017/01/21 Javascript
jquery点赞功能实现代码 点个赞吧!
2020/05/29 jQuery
基于vue2.0实现的级联选择器
2017/06/09 Javascript
轻松理解vue的双向数据绑定问题
2017/10/30 Javascript
jQuery插件实现的日历功能示例【附源码下载】
2018/09/07 jQuery
JS实现带阴历的日历功能详解
2019/01/24 Javascript
nodejs使用async模块同步执行的方法
2019/03/02 NodeJs
vue多层嵌套路由实例分析
2019/03/19 Javascript
JS为什么说async/await是generator的语法糖详解
2019/07/11 Javascript
微信小程序 拍照或从相册选取图片上传代码实例
2019/08/28 Javascript
微信小程序实现简单购物车功能
2020/12/30 Javascript
跟老齐学Python之玩转字符串(1)
2014/09/14 Python
CentOS中使用virtualenv搭建python3环境
2015/06/08 Python
Python爬虫抓取手机APP的传输数据
2016/01/22 Python
Python使用pymysql小技巧
2017/06/04 Python
对django2.0 关联表的必填on_delete参数的含义解析
2019/08/09 Python
后勤副校长自我鉴定
2013/10/13 职场文书
师范毕业生自荐信
2013/10/17 职场文书
关于迟到的检讨书
2014/01/26 职场文书
群众路线教育实践活动心得体会
2014/03/07 职场文书
《九寨沟》教学反思
2014/04/08 职场文书
社区两委对照检查材料
2014/08/23 职场文书
西双版纳导游词
2015/02/03 职场文书
使用pd.merge表连接出现多余行的问题解决
2022/06/16 Python