关于vue data数据{__ob__: Observer }的问题

遇到这问题之后看了百度的很多解决办法,很多都是混淆没说清楚,我很讨厌,所有我自己总结一下希望帮到你。具体分为:

比如用axios请求到数据,如果是用的then,那直接赋值给data对象里的属性。

$http.get("http://m.php.com/goods.php?limit="+this.limit+"&page="+this.page).then((res) => {
            this.imgsArr.push(...res.data.data);
            if(this.imgsArr.length<res.data.count){
              this.page+=1;
            } else {
              this.lodding = false
            }
          });

 

但是有情况是需要外部赋值,那就是异步请求的问题,外部打印接收赋值的变量为空,但是打印有是有值的,并且是带有{__ob__: Observer },这是vue本身对data()数组对象的监控器,没什么影响,你赋值了那肯定监听,并不是说出现{__ob__: Observer },不可枚举。

 

 

想要拿到值就用setTimeout 延迟操作就行。

 

 或者用同步阻塞也是能解决

 

 

另外一种情况,需要去遍历时,数组嵌套对象的数据集不能遍历 然后用JSON.parse(JSON.stringify(object))解决。但我不确定,因为我没遇到过。我自己试了是可遍历的

 

 我的猜想是父子组件的共享数据问题,并不是所谓的无法操作遍历,用JSON.parse(JSON.stringify(object))能解决本身就是深拷贝,就变成独立数据。

 

 
 
 
 
 
 
posted @ 2023-09-06 16:46  闲时一点  阅读(641)  评论(0编辑  收藏  举报