用途:把前端接入 Convex,解决数据不实时更新、页面过度重渲染、加载更多列表丢行或重复、显示在线或输入状态等问题。
主要能力:useQuery 是实时订阅,服务端记录查询的读取集合并推送结果,写入与读取集合重叠时重跑查询;结果按函数与参数缓存,多个组件共享同一订阅,所有活跃订阅在同一数据库时间戳更新。支持 useMutation 与 withOptimisticUpdate 乐观更新,失败时自动回滚本地存储。分页用 .paginate() 与 usePaginatedQuery,每页各自订阅,插入删除无需重新拉取;状态为 LoadingFirstPage、CanLoadMore、LoadingMore、Exhausted。动态查询集合用 useQueries,每个值为 undefined(加载中)、Error 或结果。在线状态建议使用 @convex-dev/presence 组件,安装命令 npm install @convex-dev/presence,并在 convex.config.ts 中 app.use(presence)。
必要用法:条件查询用 useQuery(fn, args ? args : "skip"),不要条件调用 hook;先判断 undefined 再渲染;后端查询需带 args 与 returns 校验器,并通过 withIndex 读取;查询内禁止 Date.now()、Math.random()、fetch,时间应作为参数传入并取整;可增长列表用 .take(n) 或 .paginate(),不要用 .collect() 切片做偏移分页;乐观更新需覆盖该变更影响的所有查询;心跳等热点字段单独建表;快速输入变更在客户端防抖。
限制:资料未提供收费、价格、平台与效果信息。文档链接:https://docs.convex.dev/llms.txt、https://docs.convex.dev/client/react、https://docs.convex.dev/client/react/optimistic-updates、https://docs.convex.dev/database/pagination、https://www.convex.dev/components/presence。