最近在用一个后台管理开源框架时,动态配置路由,报错addRoutes()传的值不是数组,研究后发现是因为我传的数组中有__ob__这个对象。
后来只有格式转了一下才生效。
// router.addRoutes(accessRoutes) // 这种写法报错 router.addRoutes([...accessRoutes])
两个数组accessRoutes 和 [...accessRoutes]打印之后的区别:
vue中,带有_ob__:Observer的数组,无法取到里面的值
console.log('开始') console.log([...this.upData]) 拷贝一个数组, 打印此刻的瞬时状态 console.log(this.upData[0]) console.log('结束')
打印this.upData[0]
的值,为undefined
,
自己也百度了下vue的Observer,只是得到大概信息:observer是Vue核心中最重要的一个模块(个人认为),能够实现视图与数据的响应式更新,底层全凭observer的支持。
百度也有答案讲的是:控制台打印的是引用,打印的时候并没有值,之后某个时刻有值了,然后才能打印出来值,提议可以试试下面方法:
console.log('开始') console.log([...this.upData]) 拷贝一个数组, 打印此刻的瞬时状态 console.log(this.upData[0]) console.log('结束')