用途:当用户已有 Solid 1.x 代码并希望迁移到 Solid 2.x beta 或 next 时使用。该技能偏迁移导向,目标不只是解释新 API,而是在尽量保留行为的前提下安全转换旧代码。若用户只想了解某个 2.x 原语或警告、并非实际升级,应改用 Solid 2.x API 技能。
主要内容按迁移流程组织:
高置信度机械迁移(优先执行):solid-js/web → @solidjs/web、solid-js/store 导入 → solid-js、solid-js/h → @solidjs/h、solid-js/html → @solidjs/html、solid-js/universal → @solidjs/universal;Suspense → Loading、ErrorBoundary → Errored、Index → For keyed={false}、unwrap → snapshot、mergeProps → merge、splitProps → omit、classList → class、onMount → onSettled、oncapture: 移除。注意 Index 迁移后索引也变为 accessor,merge 中 undefined 是显式覆盖值。
需谨慎处理的语义迁移:2.x 中写入后读取不会立即观察到新值,测试或命令式 DOM 代码需在必要处使用 flush(),但不宜滥用;createEffect 从单回调改为 compute/apply 形式,追踪读取放前半段、副作用与清理放后半段;createComputed 移除,按意图替换为拆分 effect、函数式 createSignal/createStore 或 createMemo;Context.Provider 改为直接以 context 作 provider;顶层响应式读取与 props 解构会产生警告,需移入 JSX 或 memo;createSelector 转为 createProjection;store 更新优先 draft-first,storePath(...) 仅作过渡;createResource 并非简单改名,应转向异步计算加 Loading;旧的 transition 写法改向 action(...)、optimistic 原语与 refresh(...)。
适用场景:升级、移植、转换、分阶段迁移计划,以及升级期间或之后出现的调试与破坏排查。
限制与注意事项:迁移可能需临时兼容手段,如测试库适配、包别名、SSR 打包、本地 Solid 版本去重、锁定 next 版本等;若依赖尚未跟上应明确说明,区分框架迁移与生态破坏。开发警告常是语义出错的首个准确信号。现有资料未提供具体收费、平台或效果信息。