响应式属性是如何工作的?当你添加一个响应式属性时,Lit 会为该属性添加访问器。当你设置该属性时,Lit 会检查属性是否发生了变化。如果属性发生了变化,Lit 会启动一个更新周期。更新周期是_异步_的,因此在单个事件处理程序中更新多个属性,例如,只会触发一次更新。
默认情况下,Lit 使用严格不等式检查(!==)来判断属性是否发生变化。如果你修改了一个现有的对象或数组,Lit 将无法检测到变化。试着点击预览面板中某个列表项旁边的 "x" 按钮。你会注意到列表没有更新。
Lit 的默认相等性检查在使用不可变数据模式时效果很好。例如:
this.array = [...this.array, newThing]this.obj = {...this.obj, id: ++this.obj.id} 要在当前组件中使用这种方式,请用以下代码替换现有的 splice() 调用:
this.groceries = this.groceries.filter((_, i) => i !== indexToRemove); 这会创建一个新数组,其中包含第一个数组中除了你要移除的元素之外的所有成员。由于 groceries 现在是一个新数组,这个变化会触发更新。
更多信息请参阅修改对象和数组属性。