设置响应式属性或调用 requestUpdate() 会触发响应式更新周期。在更新周期开始时,Lit 会调用 shouldUpdate() 方法,并传入一个已更改属性的映射。
默认情况下,shouldUpdate() 总是返回 true。你可以重写 shouldUpdate() 来决定组件是否需要更新自身。
以右侧的组件为例。该组件应该在你按下 Animate 按钮时更新。但从渲染计数器可以看出,当你将动画速度从 Fast 改为 Slow 时它也会更新……即使没有任何视觉上的变化。
要修复这个问题,请在组件类中添加以下方法:
shouldUpdate(changedProperties: PropertyValues<this>): boolean { return !(changedProperties.size === 1 && changedProperties.has('duration')); } shouldUpdate(changedProperties) { return !(changedProperties.size === 1 && changedProperties.has('duration')); } 试着改变动画速度,观察渲染计数的变化。