让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 学习之二 属性 文本与值(text,val)
Nov 25 Javascript
jQuery源码分析之jQuery中的循环技巧详解
Sep 06 Javascript
form.submit()不能提交表单的错误原因及解决方法
Oct 13 Javascript
jQuery中DOM操作实例分析
Jan 23 Javascript
javascript数组常用方法汇总
Sep 10 Javascript
微信小程序之ES6与事项助手的功能实现
Nov 30 Javascript
node内置调试方法总结
Feb 22 Javascript
Vue条件循环判断+计算属性+绑定样式v-bind的实例
Sep 18 Javascript
Bootstrap fileinput 上传新文件移除时触发服务器同步删除的配置
Oct 08 Javascript
JQuery特殊效果和链式调用操作示例
May 13 jQuery
JS前端知识点总结之内置对象,日期对象和定时器相关操作
Jul 05 Javascript
laravel实现中文和英语互相切换的例子
Sep 30 Javascript
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
re0第二季蕾姆被制作组打入冷宫!艾米莉亚女主扶正,原因唏嘘
2020/04/02 日漫
php simplexmlElement操作xml的命名空间实现代码
2011/01/04 PHP
PHP面向对象学习笔记之一 基础概念
2012/10/06 PHP
php中memcache 基本操作实例
2015/05/17 PHP
Yii2.0高级框架数据库增删改查的一些操作
2015/11/16 PHP
js检测客户端不是firefox则提示下载
2007/04/07 Javascript
20个非常棒的Jquery实用工具 国外文章
2010/01/01 Javascript
jQuery 自定义函数写法分享
2012/03/30 Javascript
js特殊字符过滤的示例代码
2014/03/05 Javascript
AngularJS使用ng-inlude指令加载页面失败的原因与解决方法
2017/01/19 Javascript
vue使用监听实现全选反选功能
2018/07/06 Javascript
vue项目每30秒刷新1次接口的实现方法
2018/12/04 Javascript
vue-socket.io跨域问题有效解决方法
2020/02/11 Javascript
javascript使用canvas实现饼状图效果
2020/09/08 Javascript
vue制作toast组件npm包示例代码
2020/10/29 Javascript
[03:38]2014DOTA2西雅图国际邀请赛 VG战队巡礼
2014/07/07 DOTA
[02:12]打造更好的电竞完美世界:完美盛典回顾篇
2018/12/19 DOTA
pymongo实现控制mongodb中数字字段做加法的方法
2015/03/26 Python
Django 根据数据模型models创建数据表的实例
2018/05/27 Python
解决Jupyter NoteBook输出的图表太小看不清问题
2020/04/16 Python
CSS3实现圆角、阴影、透明效果并兼容各大浏览器
2014/08/08 HTML / CSS
英国知名的护肤彩妆与时尚配饰大型综合零售电商:Unineed
2016/11/21 全球购物
CK澳大利亚官网:Calvin Klein澳大利亚
2020/12/12 全球购物
养殖项目策划书范文
2014/01/13 职场文书
优秀部门获奖感言
2014/02/14 职场文书
有多年工作经验的自我评价
2014/03/02 职场文书
幼儿园毕业典礼主持词
2014/03/21 职场文书
政治学求职信
2014/06/03 职场文书
2014年体检中心工作总结
2014/12/23 职场文书
婚礼女方父母答谢词
2015/01/04 职场文书
运动会表扬稿
2015/01/16 职场文书
结婚堵门保证书
2015/05/08 职场文书
焦裕禄观后感
2015/06/03 职场文书
盲山观后感
2015/06/11 职场文书
教您:房贷工资收入证明应该怎么写?
2019/08/19 职场文书
MySQL中EXPLAIN语句及用法
2022/05/20 MySQL