课程章节介绍
同学们,我们来看看这个@track装饰器,它能帮我们深入观察数据变化。
想象一下,你有一个普通的JavaScript对象,比如用花括号`{}`创建的,或者一个数组用方括号`[]`创建的。当你用@track修饰这个属性时,Lightning Web Components会仔细观察这些对象和数组内部的值,哪怕是很深层次的嵌套。
比如说你有一个对象,里面又套了数组,数组里再套对象……@track都能追着每一个变化走,循环嵌套、互相关联的复杂结构它都能正确处理,甚至对象自己引用自己这种循环引用也不怕。
但这里有个关键点,@track它“只看得懂”这些普通的对象和数组。如果你用的是自定义类的实例、Date日期、Set或者Map这些复杂类型,它就没法自动感知到内部属性的改动了。
举个例子,你有一个属性是`new Date()`,然后你在后面调用了`setDate`之类的方法修改它内部的值,@track是察觉不到的,页面不会自动刷新。那怎么办呢?你需要重新创建一个新的Date实例,替换掉整个属性值,才能触发界面更新。
所以记住,@track的深度观察只对普通的JavaScript对象和数组生效,其他复杂结构需要你手动整个替换。这样画面才会随之刷新。
好了,这一讲就到这里。大家理解了吗?我们下次继续。
关键词
LWC
Lightning Web Components
Salesforce