让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 相关文章推荐
javascript返回顶部效果(自写代码)
Jan 06 Javascript
Javascript判断图片尺寸大小实例分析
Jun 16 Javascript
Javascript验证上传图片大小[前台处理]
Jul 18 Javascript
JavaScript设置获取和设置属性的方法
Mar 04 Javascript
JavaScript Date对象详解
Mar 01 Javascript
jQuery 限制输入字符串长度
Jun 20 Javascript
什么是JavaScript中的结果值?
Oct 08 Javascript
vue 更改连接后台的api示例
Nov 11 Javascript
el-table树形表格表单验证(列表生成序号)
May 31 Javascript
js 实现碰撞检测的示例
Oct 28 Javascript
微信小程序 接入腾讯地图的两种写法
Jan 12 Javascript
js实现简单的倒计时
Jan 28 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
使用PHP数组实现无限分类,不使用数据库,不使用递归.
2006/12/09 PHP
php下使用无限生命期Session的方法
2007/03/16 PHP
解析thinkphp中的M()与D()方法的区别
2013/06/22 PHP
php面向对象的用户登录身份验证
2017/06/08 PHP
清华大学出版的事半功倍系列 javascript全部源代码
2007/05/04 Javascript
JS实现可改变列宽的table实例
2013/07/02 Javascript
JS截取url中问号后面参数的值信息
2014/04/29 Javascript
一张表格告诉你windows.onload()与$(document).ready()的区别
2014/05/16 Javascript
jQuery简单几行代码实现tab切换
2015/03/10 Javascript
EasyUI Pagination 分页的两种做法小结
2016/07/09 Javascript
JQuery之proxy实现绑定代理方法
2016/08/01 Javascript
微信小程序开发之视频播放器 Video 弹幕 弹幕颜色自定义实例
2016/12/08 Javascript
浅谈关于angularJs中使用$.ajax的注意点
2017/08/12 Javascript
react-native-tab-navigator组件的基本使用示例代码
2017/09/07 Javascript
nodejs微信扫码支付功能实现
2018/02/17 NodeJs
electron制作仿制qq聊天界面的示例代码
2018/11/26 Javascript
微信小程序实现张图片合成为一张并下载
2019/07/16 Javascript
webpack 如何解析代码模块路径的实现
2019/09/04 Javascript
vue vantUI实现文件(图片、文档、视频、音频)上传(多文件)
2019/10/15 Javascript
微信小程序地图绘制线段并且测量(实例代码)
2020/01/02 Javascript
python连接MySQL数据库实例分析
2015/05/12 Python
Python实现批量读取word中表格信息的方法
2015/07/30 Python
恢复百度云盘本地误删的文件脚本(简单方法)
2017/10/21 Python
python 显示数组全部元素的方法
2018/04/19 Python
python图形工具turtle绘制国际象棋棋盘
2019/05/23 Python
Python 常用模块 re 使用方法详解
2019/06/06 Python
python科学计算之numpy——ufunc函数用法
2019/11/25 Python
Windows10+anacond+GPU+pytorch安装详细过程
2020/03/24 Python
CSS3实现div从下往上滑入滑出效果示例
2020/04/28 HTML / CSS
MyHeritage美国:家族史研究和DNA测试的领先服务
2019/05/27 全球购物
绝对经典成功的大学生推荐信
2013/11/08 职场文书
大学生自我评价范文分享
2014/02/21 职场文书
社区义诊活动总结
2014/04/30 职场文书
2014优秀党员事迹材料
2014/08/14 职场文书
关于青春的演讲稿500字
2014/08/22 职场文书
CSS预处理框架——Stylus
2021/04/21 HTML / CSS