外观
如何理解Effect 清理、请求乱序与页面恢复?
标准回答
Effect 适合与外部系统同步,例如订阅、网络或定时器。依赖变化时需要清理旧同步并建立新同步,组件卸载时也要释放资源。开发环境的 Strict Mode 额外检查有助于暴露清理不完整,不能用禁用检查掩盖问题。
用户先查 A 再查 B,A 的响应可能更晚到达。取消旧请求能减少浪费,但仍需请求代次或结果归属检查,确保 A 不覆盖 B。加载与错误状态同样绑定代次,否则旧请求的 finally 可能关闭新请求的加载提示。
服务端渲染与客户端水合还要求初始内容一致。时间、随机值、浏览器存储和语言选择若在两端产生不同初值,可能形成水合差异。明确初始数据来源,客户端专属行为放在适当阶段,而非在渲染中无约束读取环境。
追问与回答
空依赖数组是不是永远只运行一次
它表达不随响应式依赖重新同步,但开发检查、卸载后重新挂载等仍会发生;资源管理必须能承受建立、清理、再建立。
为什么列表状态换位
检查 key 是否稳定代表业务对象,索引 key 在插入删除时可能让组件状态绑定到错误对象。
易混淆点
- 仅取消网络请求,却不保护晚到的状态更新。
参考资料
内容来源
- Android 与 AI 工程 Wiki · 原条目
q184