解决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 相关文章推荐
Javascript基础教程之数据类型转换
Jan 18 Javascript
jquery插件jSignature实现手动签名
May 04 Javascript
javascript动态创建表格及添加数据实例详解
May 13 Javascript
详解JavaScript基于面向对象之继承实例
Dec 16 Javascript
js addDqmForPP给标签内属性值加上双引号的函数
Dec 24 Javascript
jQuery使用zTree插件实现可拖拽的树示例
Sep 23 jQuery
vue-cli axios请求方式及跨域处理问题
Mar 28 Javascript
Vue的watch和computed方法的使用及区别介绍
Sep 06 Javascript
angular的输入和输出的使用方法
Sep 22 Javascript
通过实例学习React中事件节流防抖
Jun 17 Javascript
浅谈Vuex的this.$store.commit和在Vue项目中引用公共方法
Jul 24 Javascript
vue实现可拖拽的dialog弹框
May 13 Vue.js
支付宝小程序实现省市区三级联动
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 正则表达式之正则处理函数小结(preg_match,preg_match_all,preg_replace,preg_split)
2012/10/05 PHP
判断、添加和删除WordPress置顶文章的相关PHP函数小结
2015/12/10 PHP
由php中字符offset特征造成的绕过漏洞详解
2017/07/07 PHP
基于php流程控制语句和循环控制语句(讲解)
2017/10/23 PHP
URI、URL和URN之间的区别与联系
2006/12/20 Javascript
JS字符串函数扩展代码
2011/09/13 Javascript
imgAreaSelect 中文文档帮助说明
2011/10/08 Javascript
多个表单中如何获得这个文件上传的网址实现js代码
2013/03/25 Javascript
解析Javascript中大括号“{}”的多义性
2013/12/02 Javascript
jquery无刷新验证邮箱地址实现实例
2014/02/19 Javascript
jquery常用操作小结
2014/07/21 Javascript
node.js中的fs.close方法使用说明
2014/12/17 Javascript
AngualrJS中的Directive制作一个菜单
2016/01/26 Javascript
简单的jQuery banner图片轮播实例代码
2016/03/04 Javascript
JS在onclientclick里如何控制onclick的执行
2016/05/30 Javascript
jQuery弹出div层过2秒自动消失
2016/11/29 Javascript
基于Bootstrap的网页设计实例
2017/03/01 Javascript
详解VUE2.X过滤器的使用方法
2018/01/11 Javascript
Angular中使用better-scroll插件的方法
2018/03/27 Javascript
layui的布局和表格的渲染以及动态生成表格的方法
2019/09/18 Javascript
浅析Vue 中的 render 函数
2020/02/28 Javascript
[55:03]LGD vs EG 2018国际邀请赛小组赛BO2 第二场 8.17
2018/08/18 DOTA
Python访问MySQL封装的常用类实例
2014/11/11 Python
python提取字典key列表的方法
2015/07/11 Python
python实现字典(dict)和字符串(string)的相互转换方法
2017/03/01 Python
Python基于回溯法子集树模板实现图的遍历功能示例
2017/09/05 Python
Python进度条实时显示处理进度的示例代码
2018/01/30 Python
python实现定时自动备份文件到其他主机的实例代码
2018/02/23 Python
Flask框架配置与调试操作示例
2018/07/23 Python
OSPREY LONDON官网:英国本土皮具品牌
2019/05/31 全球购物
潘婷洗发水广告词
2014/03/14 职场文书
五四演讲稿范文
2014/09/03 职场文书
2015年度村委会工作总结
2015/04/29 职场文书
奥巴马开学演讲观后感
2015/06/12 职场文书
python 破解加密zip文件的密码
2021/04/22 Python
优化Mysql查询的示例
2022/04/26 MySQL