State Management Primitives — atom & computed

DEX475 - Manage State Across LWC Components

📄 第 302 页 🎬 视频课程

课程章节介绍

嗨,同学,今天咱们聊聊 LWC 里面怎么更方便地管理状态的响应式。 你可能已经习惯了用 `@track` 或者 `@wire` 来让数据变化的时候自动更新界面,但还有一种更细粒度的工具,叫“基元”。它有两个核心概念:“原子”和“计算”。 先说“原子”。你可以把它想象成一个能装任何值的盒子,这个盒子和 LWC 的响应式系统是连着的。重点是,你不能直接伸手进去改里面的东西,只能通过一个专门的方法叫 `setAtom()` 来更新它。这就保证了状态的修改是受控的,框架能立刻知道有变化,然后更新用到这个值的地方。 接着是“计算”,它用来处理派生数据。什么叫派生数据?就是依据其他一些数据算出来的值。比如,你有一个状态叫“计数”,你想自动算出它的双倍值,没必要自己再维护一个变量。这时候就用“计算”基元,它接收两个东西:一个依赖项数组,和一个计算函数。 框架很聪明,它会自动追踪这个数组里哪些值发生了变化。一旦任何一个依赖项变了,它就会重新执行你的计算函数,把最新的依赖值按顺序传进去。举个例子,如果依赖数组是 `[计数]`,那计算函数就是 `(c) => c * 2`,把这个计算赋给一个变量 `doubleCall`,那每次计数更新,二倍值就会自动同步,不用你操心。 而且不管是原子还是计算,你都可以选择让它成为组件内部的私有状态,不暴露给外面;也可以通过将它们放在返回的对象里,变成公开可访问的属性,让父组件或别的地方也能用。 最后一个小提醒:依赖项数组一定要写全。如果你用的某个状态在数组里漏掉了,那这个计算出来的值就不会跟着那个状态变,导致数据过时,也就是我们常说的“陈旧值”。所以,依赖数组别漏项。 这样,就能写出很干净的函数式派生状态,逻辑清晰又好维护。下一节我们再深入看看实际怎么在组件中用它们。

关键词

LWC Lightning Web Components Salesforce