解决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 相关文章推荐
检测是否已安装 .NET Framework 3.5的js脚本
Feb 14 Javascript
js实现点击后将文字或图片复制到剪贴板的方法
Aug 04 Javascript
jquery判断复选框选中状态以及区分attr和prop
Dec 18 Javascript
JS for...in 遍历语句用法实例分析
Aug 24 Javascript
Angularjs 实现分页功能及示例代码
Sep 14 Javascript
js实现开启密码大写提示
Dec 21 Javascript
Angular使用Md5加密的解决方法
Sep 16 Javascript
vue element-ui 绑定@keyup事件无效的解决方法
Mar 09 Javascript
使用vue开发移动端管理后台的注意事项
Mar 07 Javascript
Vue组件模板及组件互相引用代码实例
Mar 11 Javascript
详解为什么Vue中不要用index作为key(diff算法)
Apr 04 Javascript
vue-quill-editor 自定义工具栏和自定义图片上传路径操作
Aug 03 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运行出现Call to undefined function curl_init()的解决方法
2010/11/02 PHP
php中获取指定IP的物理地址的代码(正则表达式)
2011/06/23 PHP
PHP快速按行读取CSV大文件的封装类分享(也适用于其它超大文本文件)
2014/04/10 PHP
js类型检查实现代码
2010/10/29 Javascript
页面回到顶部的三种实现(锚标记,js)
2012/10/01 Javascript
拖动table标题实现改变td的大小(css+js代码)
2013/04/16 Javascript
js不能获取隐藏的div的宽度只能先显示后获取
2014/09/04 Javascript
js通过iframe加载外部网页的实现代码
2015/04/05 Javascript
JavaScript实现的经典文件树菜单效果
2015/09/08 Javascript
JavaScript动态创建div等元素实例讲解
2016/01/06 Javascript
JavaScript中的原始值和复杂值
2016/01/07 Javascript
JavaScript中匿名函数的递归调用
2017/01/22 Javascript
微信小程序 数据遍历的实现
2017/04/05 Javascript
巧用weui.topTips验证数据的实例
2017/04/17 Javascript
javascript对HTML字符转义与反转义
2018/12/13 Javascript
JavaScript实现移动端带transition动画的轮播效果
2020/03/24 Javascript
[41:41]TFT vs Secret Supermajor小组赛C组 BO3 第一场 6.3
2018/06/04 DOTA
Python的Django框架中的Context使用
2015/07/15 Python
Python减少循环层次和缩进的技巧分析
2016/03/15 Python
Python网络编程之TCP与UDP协议套接字用法示例
2018/02/02 Python
使用pandas将numpy中的数组数据保存到csv文件的方法
2018/06/14 Python
python利用selenium进行浏览器爬虫
2019/04/25 Python
python爬虫 2019中国好声音评论爬取过程解析
2019/08/26 Python
scikit-learn线性回归,多元回归,多项式回归的实现
2019/08/29 Python
用OpenCV将视频分解成单帧图片,图片合成视频示例
2019/12/10 Python
Pytorch: 自定义网络层实例
2020/01/07 Python
基于Python爬取股票数据过程详解
2020/10/21 Python
网上祭先烈心得体会
2014/09/01 职场文书
庆祝国庆节演讲稿2014
2014/09/19 职场文书
党的群众路线剖析材料
2014/10/09 职场文书
安全承诺书
2015/01/19 职场文书
2015安全保卫工作总结
2015/04/25 职场文书
学校禁毒宣传活动总结
2015/05/08 职场文书
浪漫的婚礼主持词
2015/06/30 职场文书
GoLang中生成UUID唯一标识的实现
2021/05/08 Golang
spring boot项目application.properties文件存放及使用介绍
2021/06/30 Java/Android