让Vue响应Map或Set的变化操作


Posted in Javascript onNovember 11, 2020

问题背景

我想在vuex的state中使用map,这样可以使很多操作变得方便

const state = {
 all: new Map()
}

这样的写法是没有问题的,不会报错,state.all可以像正常的Map一样使用。

但是这里有一个问题,vue的响应式系统不支持Map和Set,也就是说,当Map与Set里面的元素变化时Vue追踪不到这些变化,因此无法做出响应。这样一来,页面上依赖all的元素也不会随all的变化而变化

解决方法

用户”inca”的回答

you need to create a serializable replica of this structure and expose it to Vue

data() {
 mySetChangeTracker: 1,
 mySet: new Set(),
},

computed: {
 mySetAsList() {
 var x = this.mySetChangeTracker;
 // By using `mySetChangeTracker` we tell Vue that this property depends on it,
 // so it gets re-evaluated whenever `mySetChangeTracker` changes
 return Array.from(this.mySet);
 },
},

methods: {
 add(item) {
 this.mySet.add(item);
 // Trigger Vue updates
 this.mySetChangeTracker += 1;
 }
}

解决方法是用一个可序列化的mySetChangeTracker来手动追踪变化

Vue追踪不到Set的变化,但是可以追踪到mySetChangeTracker的变化,所以当Set发生改变后,手动改变mySetChangeTracker的值就能让Vue知道我的数据发生了变化。

在mySetAsList里面写入var x = this.mySetChangeTracker,这样一来当mySetChangeTracker更新后,mySetAsList就会做出响应

补充知识:vue渲染时对象里面的对象的属性提示undefined,但渲染成功

场景:

从后台请求的数据结构如下:

让Vue响应Map或Set的变化操作

让Vue响应Map或Set的变化操作

我的list是对象,而comment又是list里的对象,渲染成功了,却报如下错:

让Vue响应Map或Set的变化操作

解决办法:

添加一个:v-if

让Vue响应Map或Set的变化操作

以上这篇让Vue响应Map或Set的变化操作就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持三水点靠木。

Javascript 相关文章推荐
jQuery EasyUI中对表格进行编辑的实现代码
Jun 10 Javascript
基于KMP算法JavaScript的实现方法分析
May 03 Javascript
Javascript常用小技巧汇总
Jun 24 Javascript
谈一谈jQuery核心架构设计
Mar 28 Javascript
JS中如何实现Laravel的route函数详解
Feb 12 Javascript
AngularJS2中一种button切换效果的实现方法(二)
Mar 27 Javascript
利用Javascript开发一个二维周视图日历
Dec 14 Javascript
详解组件库的webpack构建速度优化
Jun 18 Javascript
解决angularjs前后端分离调用接口传递中文时中文乱码的问题
Aug 13 Javascript
Vue.js数字输入框组件使用方法详解
Oct 19 Javascript
JavaScript enum枚举类型定义及使用方法
May 15 Javascript
Vue3+elementui plus创建项目的方法
Dec 01 Vue.js
vue项目中使用rem,在入口文件添加内容操作
Nov 11 #Javascript
VUE前端从后台请求过来的数据进行转换数据结构操作
Nov 11 #Javascript
Vue 防止短时间内连续点击后多次触发请求的操作
Nov 11 #Javascript
Vue 401配合Vuex防止多次弹框的案例
Nov 11 #Javascript
VUE-ElementUI 自定义Loading图操作
Nov 11 #Javascript
在elementui中Notification组件添加点击事件实例
Nov 11 #Javascript
vue.js+element 默认提示中英文操作
Nov 11 #Javascript
You might like
PHP中获取变量的变量名的一段代码的bug分析
2011/07/07 PHP
php Xdebug的安装与使用详解
2013/06/20 PHP
php实现上传图片生成缩略图示例
2014/04/13 PHP
PHP 开发者该知道的 5 个 Composer 小技巧
2016/02/03 PHP
thinkphp查询,3.X 5.0方法(亲试可行)
2017/06/17 PHP
利用进制转换压缩数字函数分享
2014/01/02 Javascript
jQuery移除元素自动解绑事件实现思路及代码
2014/05/31 Javascript
jQuery实现提交按钮点击后变成正在处理字样并禁止点击的方法
2015/03/24 Javascript
JS与jQ读取xml文件的方法
2015/12/08 Javascript
javascript DIV实现跟随鼠标移动
2020/03/19 Javascript
Jquery实现的简单轮播效果【附实例】
2016/04/19 Javascript
Bootstrap布局之栅格系统详解
2016/06/13 Javascript
浅谈EasyUi ComBotree树修改 父节点选择的问题
2016/11/07 Javascript
javascript实现Java中的Map对象功能的实例详解
2017/08/21 Javascript
解决nodejs的npm命令无反应的问题
2018/05/17 NodeJs
jQuery实现简单的Ajax调用功能示例
2019/02/15 jQuery
Node.js从字符串生成文件流的实现方法
2019/08/18 Javascript
vue动态绘制四分之三圆环图效果
2019/09/03 Javascript
Python简单实现的代理服务器端口映射功能示例
2018/04/08 Python
python调用OpenCV实现人脸识别功能
2018/05/25 Python
浅谈PyQt5 的帮助文档查找方法,可以查看每个类的方法
2019/06/25 Python
详解Python对JSON中的特殊类型进行Encoder
2019/07/15 Python
Python Django简单实现session登录注销过程详解
2019/08/06 Python
python selenium爬取斗鱼所有直播房间信息过程详解
2019/08/09 Python
Python3利用scapy局域网实现自动多线程arp扫描功能
2021/01/21 Python
酒店司机岗位职责
2013/12/14 职场文书
《自选商场》教学反思
2014/02/14 职场文书
《小壁虎借尾巴》教学反思
2014/02/16 职场文书
认识深刻的检讨书
2014/02/16 职场文书
2014年公司植树节活动方案
2014/03/04 职场文书
党员岗位承诺口号大全
2014/03/28 职场文书
个人委托书格式
2014/04/04 职场文书
师德模范事迹材料
2014/06/03 职场文书
材料采购员岗位职责
2015/04/03 职场文书
2016年社区党支部公开承诺书
2016/03/25 职场文书
Redis Cluster集群动态扩容的实现
2021/07/15 Redis