vue中__ob__: Observer的踩坑记录
作者:有玉微凉,是为樱琅
vue中__ob__: Observer踩坑
问题分析
看这个问题的朋友先看看情况是不是和我一样,再往下看
我的问题是一个对象数组,push进去对象的话,打印出来看,显示的是 [ob: Observer],点看能看到里面的数据,但是我遍历他的话一个值也拿不到,拿到的是空值,如果push的普通的数字,字符串啥的就没事。
如果问题一样的话可以继续往下看了。
经过半天的各种分析,网上看博客,然后自己也尝试了在不同位置打console.log和断点查看,
发现在给对象数组中push进去数据的时候,打印出来就是完美的对象数组,可以遍历,但是我要用的时候的那个地方打印出来就是这样的 [ob: Observer],而且他的console比push数据的地方打印出来的快,提前打印了,说明了现在是异步操作,我要用的地方数据提前打印了。
解决问题
开始我用了async await 来阻塞它,但是没啥用,最后没办法,只能用监听了
在监听这里不停的操作他,最后才解决了问题
一些小坑
JS中include不能查看对象是否重复
我操作的话是把对象JSON.stringify成字符串,存的时候也是按照这样存,查的时候也这样查,用的时候使用数组的map方法修改他的值,更改之后使用。
vue中__ob__: Observer属性对象
__ob__: Observer是什么?
_ob__: Observer这些数据是vue这个框架对数据设置的监控器,一般都是不可枚举的。
1.vue中为什么[__ob__: Observer]下无法取到数据或者取数据时出现慢一步的情况
_ob__: Observer表示很无辜。一般情况时数据本身的问题,考虑赋值是否时异步了或者慢于监听器。这一点需要注意。
2._ob__: Observer的取用方式
- 第一种:Object.assign({},this.owner)
- 第二种:JSON.parse(JSON.stringify(this.list))
3.[ob: Observer]: 可视察数组,不能通过tableData === []这样判断是否为空,需要使用数组的长度判断才有效:tableData.length > 0
总结
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。