You signed in with another tab or window. Reload to refresh your session.You signed out in another tab or window. Reload to refresh your session.You switched accounts on another tab or window. Reload to refresh your session.Dismiss alert
* Editing a record now triggers a VDOM update *only* for that specific `Neo.grid.Row` instance.
154
+
***The VDOM Lifecycle Shift:** The old `Grid.Body` was highly virtualized—it only ever rendered the mounted range (e.g., 30 rows by 10 columns). However, it was still monolithic. While nested components (like a button in a cell) could update themselves, if the underlying *data record* changed (e.g., via a live data feed or user edit), it forced the Body into an "update all or nothing" scenario. The App Worker had to serialize and send the entire 30x10 VDOM tree to the VDOM Worker to process the single record change.
155
+
* Now, `Neo.grid.Row` acts as a discrete VDOM boundary. Editing a record triggers a VDOM update *only* for that specific Row instance. We send drastically smaller JSON payloads to the VDOM worker (1 row instead of 30) for data-driven UI updates. It is important to note that this optimization strictly targets the App $\rightarrow$ VDOM worker bridge; the final, highly-optimized DOM deltas applied to the Main Thread remain exactly the same.
156
+
157
+
**Before (v11): The Monolithic Body**
158
+
```javascript readonly
159
+
// Grid.Body.mjs (Old Architecture)
160
+
onStoreRecordChange({record}) {
161
+
let rowIndex =this.store.indexOf(record);
162
+
163
+
// The Body had to manually replace the raw VDOM node for the row
164
+
// inside its massive children array, then trigger a full update.
// We simply tell the modular Row component to update itself.
181
+
// The Body's VDOM doesn't change, and no other rows are affected.
182
+
row.createVdom();
183
+
}
184
+
}
185
+
```
186
+
155
187
***Resilient Lifecycle:** Component columns (like our Living Sparklines) are now standard children of the `Row` component. Because the row itself is never destroyed, the framework's standard lifecycle manages cell components automatically, permanently eliminating the dreaded "Zombie Canvas" bugs.
0 commit comments