vue是当今非常流行的前端框架,但是vue也有一定的缺陷。你了解过吗?下面小源泉web前端老师就为大家分析一下vue数据双向绑定的缺陷。希望对您有所帮助。让我们一起来看看吧。1.vue实例创建后,给它添加属性,不能监控。在创建Vue实例时,会遍历所有DOM对象,并为每个数据属性添加get和set。get和set允许Vue观察数据的变化并触发更新。但是,如果在Vue实例化后添加(或删除)一个属性,这个属性将不会被vue处理,改变get和set。如果你不想创建一个新的对象,你可以使用Vue.set来设置一个新的对象属性。此方法确保属性被创建为响应式属性并触发视图更新:functionaddToCart(id){varitem=this.cart.findById(id);if(item){item.qty++}else{//Do不能直接添加属性,比如item.qty=1//使用Vue.set创建响应式属性Vue.set(item,'qty',1)this.cart.push(item)}}addToCart(myProduct.ID);2.arrayObject.defineProperty的一个缺陷是不能监听数组的变化。直接使用索引(index)设置数组项时,不会被vue检测到:app.myArray[index]=newVal;然而,Vue的文档中提到Vue可以检测到数组变化,但是只有以下八种方法,vm.items[indexOfItem]=newValue是检测不到的。push();pop();shift();unshift();splice();sort();reverse();你也可以使用Vue.set来设置数组项:Vue.set(app.myArray,index,newVal);3。proxy和definepropertyProxy对象在ES2015规范中正式发布,用于定义基本操作(如属性查找、赋值、枚举、函数调用等)的自定义行为。它在目标对象之前设置了一层“拦截”。外部对对象的访问必须先经过这一层拦截。因此,它提供了一种过滤和重写外部访问的机制。我们可以认为Proxy是Object.defineProperty的全方位增强版。具体文件可以查看这里;Proxy有多达13种拦截方法,不限于apply、ownKeys、deleteProperty、has等,Object.defineProperty没有。Proxy返回一个新对象,我们只能操作新对象来达到目的,而Object.defineProperty只能遍历对象属性直接修改。Proxy作为新标准,将受到浏览器厂商关注的持续性能优化,这就是传说中的新标准的性能加成。当然,Proxy的缺点是兼容性问题,无法用polyfills来弥补,所以Vue的作者声明需要等到下一个大版本(3.0)再用Proxy重写。以上就是小源泉web前端讲师分享的Vue数据双向绑定的不足之处。正在学习前端或者已经在工作岗位上的小伙伴们了解吗?希望对您有所帮助。想了解更多的朋友可以登录小源泉官网。
