标准答案

  1. 迁移前要明确目标,是降低状态复杂度、升级渲染架构、改善性能,还是支持多团队交付。
  2. 不要一次性全量重写,应从低风险或高收益模块试点,建立可复制模式。
  3. 新旧状态库并存时可以用适配层隔离调用方,避免页面直接依赖两套实现细节。
  4. 迁移期间要保持路由、埋点、权限、错误处理和测试覆盖稳定。
  5. 每个阶段都要有回滚方案和验收指标,例如错误率、性能、开发效率或包体变化。

题目解析

这道题考的是工程治理。迁移不是技术选型结束后直接开改,而是持续控制风险。

状态库迁移尤其要注意数据来源、更新顺序和副作用位置,否则容易出现新旧状态不一致。

好的迁移计划会把业务交付和技术演进并行推进,而不是长期冻结需求。

代码示例

下面用适配 Hook 隔离调用方,让页面不用关心底层状态库是否已迁移。

TSX
function useCurrentUserModel() {
  const currentUser = useNewUserStore(state => state.currentUser)
  const updateUser = useNewUserStore(state => state.updateUser)

  return {
    currentUser,
    updateUser
  }
}

function ProfileHeader() {
  const { currentUser } = useCurrentUserModel()

  return <span>{currentUser.name}</span>
}

常见误区

  • 把迁移做成全量重写,业务验证和回滚成本都很高。
  • 新旧状态库同时被页面直接使用,状态来源混乱。
  • 只迁移代码,不补测试、监控和错误回滚方案。

作者信息