题目
你们有一个已经上线一年的 DApp,钱包连接是手写的监听逻辑,数据获取直接用底层库。
团队希望引入连接库与缓存层,但不允许停服重写。请给出一条可执行的迁移路径,并说明共存期最大的风险是什么。
考察目标
- 能否给出分阶段的迁移路径。
- 是否识别共存期的双状态源风险。
- 能否定义每阶段的验收条件。
考察渐进式迁移的路径设计,以及共存期的状态一致性维护。
你们有一个已经上线一年的 DApp,钱包连接是手写的监听逻辑,数据获取直接用底层库。
团队希望引入连接库与缓存层,但不允许停服重写。请给出一条可执行的迁移路径,并说明共存期最大的风险是什么。
迁移的关键是让新库成为连接状态的单一来源,再逐步替换使用者:先把连接层接入应用根部并让旧代码读取新状态;再按页面把读数据的路径迁入查询层;最后清理手写监听与旧缓存。共存期的主要风险是两套连接状态并存导致界面数据矛盾。
accountsChanged、chainChanged 事件推送,页面据此更新连接状态(依据:EIP-1193 §Events)。request 方法完成,方法名与参数由请求方给出(依据:EIP-1193 §request)。WagmiProvider 与 QueryClientProvider 接入应用根部,组件树内之后才可以使用 hooks(依据:wagmi Getting Started §Wrap App in Context Provider、§Setup TanStack Query)。createConfig 的 storage 默认在浏览器环境使用 localStorage 持久化配置状态,跨会话恢复连接依赖这一层(依据:wagmi createConfig §Parameters(storage))。config.state,包含 status 与 connections,组件通过 hooks 读取同一份状态(依据:wagmi createConfig §State)。useAccount 改为 useConnection)与写操作统一为 mutate/mutateAsync 等弃用项,升级时这类改名会进入迁移清单(依据:wagmi Migrate from v2 to v3 §Deprecations)。发现这道题有问题? 反馈此题