Data-Driven Composition Approach

DEX475 - Composition

📄 第 93 页 🎬 视频课程

课程章节介绍

同学们,咱们接着聊Lightning Web Components里的一个重要模式——数据驱动的方法。你可以把它理解为“老虎机”插槽的一个替代方案。 先回忆一下,传统的老虎机模式,是由父组件直接把标记内容塞进子组件的插槽里。但数据驱动的方法不一样,它不是传标记,而是传数据。父组件手里握着一个数组,比如叫itemsData,里面每个对象都包含标签、Id、以及是否选中这类状态。然后,父组件的模板用for:each指令去循环这个数组,为每一个数据对象生成一个子组件,同时通过属性把那一项的数据传下去。这样一来,子组件就很纯粹了:它不需要去维护什么内部状态,它只负责忠实地渲染接收到的数据,当数据变的时候,它自然就跟着变。 那交互逻辑怎么办?注意,像点击事件的处理,我们是定义在父组件里的。子组件被点击,会触发父组件传进去的事件处理函数,父组件直接去修改自己数组里的对应项的选中状态。因为数据变了,框架会让子组件自动更新。所以整体是单向数据流,非常清晰。 为什么推荐这种方法呢?尤其是在像lightning-datatable这种复杂组件里,表格的列定义、行数据、排序状态等等,本质都是配置型的,你如果硬用标记去表达成百上千的单元格,那会非常麻烦。而用数据驱动,你只需要准备好数据,组件就会自动渲染出来,维护起来也简单。 总结一下,数据驱动的方法让父组件掌控全局状态,子组件变成无状态的“画板”,这样可以大大降低复杂度。在处理那些高度依赖于配置的场景时,它比老虎机模式更灵活、更易维护。好,这个概念大家理解了吧?

关键词

LWC Lightning Web Components Salesforce