本文主要是介绍@ObjectLink与@Observed的实践笔记,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
@ObjectLink与@Observed本意就是解决@Link感知不到对象中嵌套对象,数据项是对象的属性变化的问题,在实操的过程中也发现比较多坑,
1.@ObjectLink是用来修饰Componet成员对象属性的,简单类型不行;
2.@ObjectLink修饰的对象的类,必须被@Observed修饰;
因为@Observed修饰的是类,那么后面的出初化/操作,都得使用Class类来操作,不能使用对象字面量表示法,不然感知不到,如
//这个是错误格式,这个可运行,但父子变化后,互相感知不到对方的变化 this.p.address = {"province":"河北","city":"张家界","area":"某某区"}//这种才是正确的 let addr= new AddressModel(); this.p.address = addr; addr.province = "河北" addr.city = "张家界" addr.area = "某某区"
这个坑我踩了,半天都回不过神来,
@ObjectLink只能管当前Component Object,如果里面还嵌套的话,还得再使用子Component,继续分,如果不使用子Component+@ObjectLink的话,我试了下,数据可以正常改,也会各处去同步,但ui不更新!有没有解决办法?有的,有三种
1.上面说的,再使用子Component+@ObjectLink去细分;
2.重新创建子对象或者深度copy,让系统看到本Object下的类对象不是之前那个了,是新的了
重新建---
const newAddress = new AddressModel();
newAddress.province = "广东";
newAddress.city = "深圳";
newAddress.area = "罗湖";
this.p.address = newAddress; // 赋值一个新的对象
深拷贝--this.p.address = { ...this.p.address, province: "广东", city: "深圳", area: "罗湖" };
这篇关于@ObjectLink与@Observed的实践笔记的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!