mcpField
S
solidjs-v2

solidjs-v2

github.com/khmm12开发1485 次安装5 周前更新
代码仓库

关于 solidjs-v2

solidjs-v2 是面向 Solid 2.0 开发者的参考技能,目标为指定的候选发布包。它提供响应式、异步数据、状态存储、DOM 行为及相关 API 的版本适配指导。

主要功能

  1. 01Solid 2.0 响应式模式
  2. 02异步数据与操作指导
  3. 03状态存储更新模式
  4. 04DOM、TypeScript 和服务端函数参考
  5. 05按版本核验 API 与实现

适用场景

  1. 01解答 Solid 2 API 问题
  2. 02实现响应式界面状态和派生值
  3. 03处理异步加载、修改与错误
  4. 04依据参考资料检查 Solid 2 代码和示例

安装

复制下面的命令,在终端中运行。

$npx skills add https://github.com/khmm12/solidjs-v2-skills --skill solidjs-v2

安装后在 Claude Code 中输入/solidjs-v2确认已加载。

包含的文件

除 SKILL.md 外,安装时一起下载的参考资料和脚本。

references/
async-and-actions.md
control-flow-and-dom.md
conventions.md
patterns.md
reactivity.md
server-components.md
server-functions.md
stores.md
typescript-setup.md

详细介绍

SolidJS 2.0

参考目标:[email protected] 和 @solidjs/[email protected]。

确认版本

如果独立问题提到了 Solid 2,请使用已验证的参考目标。 对于项目修改,请读取已安装的 solid-js 版本(锁文件/包元数据);若为主版本 2,则应用本指南。除非用户要求迁移,否则保留 1.x 项目的惯例。 如果版本不同,已安装的类型定义优先于这些参考内容。

使用 Solid v2 模型

  • 组件每次挂载只运行一次。 JSX、memo 和 effect 的计算回调会跟踪读取操作。将 props 保留为 props.name;在这些跟踪作用域内读取它们。
  • 变化的 UI 值应保存在信号或 store 中。 访问器必须读取响应式状态才能订阅。将普通 let/Map 包装在函数中,并不会让赋值变为响应式;普通变量应只用于不参与渲染的记录工作。
  • JSX 编译器会提供跟踪和 getter。 写成 <Counter value={count()} />,并在子组件中读取 props.value。该表达式是一个值,不是额外的回调。对于手动构建的 options 对象,应使用 getter 或与被调用函数类型匹配的访问器。 遵循值的类型:调用 signal/memo 访问器,直接读取 store 字段,并向列表渲染传入数组值。JSX 会跟踪 <span>{label()}</span> 这样的表达式;只有类型明确要求回调子元素的组件才使用回调子元素,例如 For。使用 keyed={row => row.id} 时,For 会提供行访问器(row());默认的 For 会提供原始行(row.name)。
  • 派生状态。 对只读派生状态使用 createMemo,对可写派生状态使用 createSignal(() => props.initial)。从处理器、effect apply 回调或 onSettled 中调用 setter 和操作。
  • 写入会在微任务中提交。 如果命令式调用方需要在下一行获取更新后的状态或 DOM,请使用 flush()。
  • Effects 有两个必需阶段。 createEffect(compute, apply, options?) 会在 compute 中跟踪;apply 不跟踪地运行,并返回清理函数或 undefined。对于 compute 错误,将第二个参数替换为 { effect, error }。
  • 异步逻辑应放在计算中。 从 memo 或派生 store 返回 Promise/AsyncIterable。在 Loading 中渲染消费者;使用 Errored 处理错误。
  • 异步客户端变更使用 actions。 乐观写入 → yield 服务端工作 → 使用 yield refresh(source) 确认重新获取,或使用 yield until(predicate) 等待实时确认。乐观覆盖层在成功和失败时都会结束;确认操作会提供持久状态。在调用处处理 action Promise。 当快照替换行时,将显示中的编辑内容保存在单独的乐观状态中;在操作完成前,将该编辑内容叠加显示在最新确认的行上。 保存指示器读取一个乐观标志。SSR 会消费异步源。
  • Store 使用草稿。 从 solid-js 导入 createStore;使用 const [state, setState] = createStore(initial) 获取 setter。在回调花括号内修改;仅在有意替换根状态时才返回值。
  • DOM 属于 @solidjs/web。 使用其 JSX 类型和 jsxImportSource;HTML 属性名使用小写,class 可用数组/对象,并使用回调 ref。

选择适合任务的模式

打开下方对应的链接文件,阅读相关章节及其中的示例和注意事项。请相对于此 SKILL.md 解析链接,而不是相对于项目的工作目录。搜索符号时,请在此技能的文件夹中使用 rg --hidden:整个工作区的搜索会跳过隐藏的 .agents/.codex 文件夹,可能会误以为某个 API 没有文档。

简短的 API 问题也需要进行此项查阅。对于组合模式,请沿本地链接继续查阅。实现前,请明确要读取的状态、会改变该状态的事件,以及负责其生命周期的组件/请求。当所选模式涵盖这些行为及其完成/失败路径时,即可结束查阅;搜索结果为空并不能证明某个 API 不存在。

任务参考资料
可编辑属性、派生值、订阅、持久化、DOM 时序、诊断reactivity
获取/渲染数据、乐观保存、显示进度、通过重新获取或实时回显确认写入async and actions
更新记录、合并服务端数据、选择行、公开嵌套实时视图、快照/深层stores
渲染列表/分支、加载组件、SSR 流式传输、属性、事件、引用control flow and DOM
导入、TypeScript、上下文、测试设置TypeScript setup
缓存优先查询、变化的套接字订阅、选中行、共享/每请求状态patterns
createX 和 useX 命名conventions
服务端函数、请求本地状态/扩展、传输、验证、单航班、无 JS 表单server functions
实验性服务端组件和客户端插槽server components

验证结果

改编规范示例,保留其导入、类型、所有权和取消机制。包含实现所需的辅助工具。用法示例也要使用提供的接口;如果某些服务的实现不属于任务范围,请将其作为参数接收。

有关 API 的精确说明应采用已发布的签名,包括调用方提出的 API。明确说明缺失或未经验证的契约,不要自行臆造。也要检查其他断言;保留源内容中的条件和例外。照搬准确的调用/类型结构,再改编名称和数据。可执行示例必须保持为有效的 TypeScript,包括 JSX 和导入。

在多文件示例中,每个使用共享类型的消费者都要导入该类型。

类型检查可以验证签名;运行时断言则用于确认顺序、清理、待处理状态和水合行为。使用项目的测试设置验证所需的状态转换,包括失败和释放情形。现有的冒烟测试只覆盖其实际断言的内容。最终说明仅陈述已实现的行为、实际运行的检查和剩余的不确定性;对未经测试的主张要标注为未经验证。

评论

支持 Markdown