SuperAPI AI 工具集

cometchat-nextjs-patterns

前端与建站

查看项目

更新于 10-15 20:14

技能介绍

用途:该技能教 Claude 如何在 Next.js 项目中集成 CometChat React UI Kit v6。Next.js 因服务端渲染(SSR)和 Server/Client Component 边界而集成复杂,CometChat 组件均为浏览器专属,处理不当是集成失败的首要原因。资料建议先读配套技能 cometchat-core(初始化、登录、CSS、Provider 与反模式)、cometchat-components(组件目录与组合)与 cometchat-placement(聊天位置选择)。

项目识别:package.json 含 next 依赖即视为 Next.js;存在 app/layout.tsx 按 App Router 处理,仅存在 pages/_app.tsx 则按 Pages Router 处理,两者可共存。

核心能力与用法: 1)SSR 规避:所有导入 @cometchat/chat-uikit-react 的文件必须阻止服务端渲染,否则构建会因 window is not defined 崩溃。App Router 中 "use client" 必须是文件第一行,且在 import 之前;Server Component 里渲染需用 next/dynamic 并设 ssr: false。Pages Router 用 next/dynamic 的 ssr: false。 2)App Router 的 CometChatProvider:文件顶部加 "use client",用 UIKitSettingsBuilder 读取 NEXT_PUBLIC_COMETCHAT_APP_ID、NEXT_PUBLIC_COMETCHAT_REGION、NEXT_PUBLIC_COMETCHAT_AUTH_KEY,模块级 initialized 与 loginInFlight 变量避免 StrictMode 下重复初始化与重复登录。挂载可在根 layout 全局包裹,也可用路由组 (chat)/layout.tsx 仅限聊天路由,后者性能更好。 3)Pages Router 的 Provider 挂载在 pages/_app.tsx,用 dynamic 导入 Provider 并设 ssr: false。 4)路由放置:App Router 基于文件系统,直接在 app/messages/page.tsx 建页面,用 Link(from next/link)加导航;Pages Router 在 pages/messages.tsx 动态导入 ChatView。 5)弹窗/抽屉:创建带 "use client" 的 ChatDrawer,用 CometChat.getUser 取用户,状态需放在客户端组件或用客户端 Context 提升。

限制:示例中的 uid 登录明确标注仅限开发环境,生产需参考 cometchat-production;具体定价、平台支持范围等资料未提供。