一次 setData 调用从逻辑层到界面呈现会经历什么,为什么局部更新仍可能卡顿
简答题中等608 次浏览
参考答案与解析
# 核心结论
一次 setData 并不是对界面节点的直接赋值,而是逻辑层向视图层提交可序列化状态的过程。框架通常需要整理更新路径、构造数据补丁、序列化消息、经过宿主通信通道传输,再由视图层更新模板绑定、组件树、布局和绘制。因此局部更新仍可能卡顿:路径虽然局部,但提交频率、数据体积、模板依赖范围、组件层级以及更新后触发的布局复杂度都可能很高。优化时不能只看调用次数或字段数量,而应同时分析通信成本与渲染成本。
# 底层机制
逻辑层维护页面状态,视图层持有由模板、样式和组件树构成的渲染结构。两层通常不能共享任意内存对象,传递内容必须可序列化。函数、循环引用、复杂原型对象和宿主句柄不适合作为页面数据。调用 `setDat
