解决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 实现??打印?理
Apr 28 Javascript
利用onresize使得div可以随着屏幕大小而自适应的代码
Jan 15 Javascript
基于JQuery的Select选择框的华丽变身
Aug 23 Javascript
javascript重写alert方法的实例代码
Mar 29 Javascript
jQuery中获取checkbox选中项等操作及注意事项
Nov 24 Javascript
node.js开发中使用Node Supervisor实现监测文件修改并自动重启应用
Nov 04 Javascript
JQuery复制DOM节点的方法
Jun 11 Javascript
JavaScript实现99乘法表及隔行变色实例代码
Feb 24 Javascript
JavaScript的==运算详解
Jul 20 Javascript
jQuery中的一些小技巧
Jan 18 Javascript
jQuery+vue.js实现的多选下拉列表功能示例
Jan 15 jQuery
微信小程序跳转到其他网页(外部链接)的实现方法
Sep 20 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 empty()与isset()区别的详细介绍
2013/06/17 PHP
php统计时间和内存使用情况示例分享
2014/03/13 PHP
php使用smtp发送支持附件的邮件示例
2014/04/13 PHP
IE JS无提示关闭窗口不提示的方法
2010/04/29 Javascript
js获取 type=radio 值的方法
2014/05/09 Javascript
jQuery中:contains选择器用法实例
2014/12/30 Javascript
Javascript动态创建表格及删除行列的方法
2015/05/15 Javascript
纯javascript移动优先的幻灯片效果
2015/11/02 Javascript
jQuery动态加载css文件实现方法
2016/06/15 Javascript
利用JS实现数字增长
2016/07/28 Javascript
微信小程序 特效菜单抽屉效果实例代码
2017/01/11 Javascript
nodejs npm错误Error:UNKNOWN:unknown error,mkdir 'D:\Develop\nodejs\node_global'at Error
2019/03/02 NodeJs
JQuery+Bootstrap 自定义全屏Loading插件的示例demo
2019/07/03 jQuery
使用python批量读取word文档并整理关键信息到excel表格的实例
2018/11/07 Python
Python 获取中文字拼音首个字母的方法
2018/11/28 Python
Python中出现IndentationError:unindent does not match any outer indentation level错误的解决方法
2020/04/18 Python
pyqt5 QScrollArea设置在自定义侧(任何位置)
2019/09/25 Python
python ctypes库2_指定参数类型和返回类型详解
2019/11/19 Python
使用python快速实现不同机器间文件夹共享方式
2019/12/22 Python
PyCharm+Pipenv虚拟环境开发和依赖管理的教程详解
2020/04/16 Python
浅析Python 简单工厂模式和工厂方法模式的优缺点
2020/07/13 Python
理解Django 中Call Stack机制的小Demo
2020/09/01 Python
python3 googletrans超时报错问题及翻译工具优化方案 附源码
2020/12/23 Python
CSS3实例分享--超炫checkbox复选框和radio单选框
2014/09/01 HTML / CSS
如何让pre和textarea等HTML元素去掉滚动条自动换行自适应文本内容高度
2019/08/01 HTML / CSS
经济实惠的豪华背包和行李袋:Packs Project
2018/10/17 全球购物
【魔兽争霸3重制版】原版画面与淬火MOD画面对比
2021/03/26 魔兽争霸
家庭教育先进个人事迹材料
2014/01/24 职场文书
毕业生自荐书
2014/02/03 职场文书
生日主持词
2014/03/20 职场文书
师恩难忘教学反思
2014/04/27 职场文书
三八妇女节超市活动方案
2014/08/18 职场文书
村党支部对照检查材料思想汇报
2014/09/28 职场文书
2014年信息中心工作总结
2014/12/17 职场文书
农村房屋租赁合同(范本)
2019/07/23 职场文书
Python经常使用的一些内置函数
2022/04/11 Python