评论
为任务、订单等记录添加讨论。评论跟随记录,在网格、看板、画廊、日历和甘特图中使用同一份评论,不会因为切换视图产生新的讨论。
注册插件
在 Bases 核心和 UI 插件之后添加:
pnpm add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-uinpm install @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-uiyarn add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-uibun add @univerjs-pro/bases-thread-comment @univerjs-pro/bases-thread-comment-uiimport { UniverBasesThreadCommentPlugin } from '@univerjs-pro/bases-thread-comment'import { UniverBasesThreadCommentUIPlugin } from '@univerjs-pro/bases-thread-comment-ui'import '@univerjs-pro/bases-thread-comment/facade'import '@univerjs/thread-comment/facade'import '@univerjs-pro/bases-thread-comment-ui/lib/index.css'univer.registerPlugin(UniverBasesThreadCommentPlugin)univer.registerPlugin(UniverBasesThreadCommentUIPlugin)同时合并评论相关包的语言资源,并为应用配置当前用户。UI 插件提供评论入口,数据插件负责评论与记录的关联。
添加和读取评论
const record = univerAPI.getActiveBase()?.getTables()[0]?.getRecords()[0]if (!record) throw new Error('Create a record first')await record.createCommentAsync('Please confirm the delivery date.')const comments = record.getComments()console.log(comments.map(({ root }) => root.id))getComments() 读取本地已加载的评论。使用远程数据源时,可调用 await record.listCommentsAsync() 同步已知讨论后读取。回复、更新和删除等通用操作见评论 Facade。
保存与多人讨论
本地评论可以随 Base 资源保存,使用 base.save() 获取完整快照。恢复快照前先注册评论插件。
如果多人需要共享评论,还要接入评论服务、数据源和权限。正文协同不等于评论服务已接通,具体后端实现见 Office 协同扩展模块。用两个账号验证评论创建、读取和权限,再检查重新打开后的内容。
通用评论操作
调用前同时导入通用评论 Facade 和品类 Facade。品类方法负责建立稳定锚点,通用 API 用于回复、修改、解决和删除评论。getComments() 读取本地状态;listCommentsAsync() 通过已配置的数据源同步已知线程,不会发现服务端的全部线程。
import '@univerjs/thread-comment/facade'const [thread] = univerAPI.getComments({ resolved: false })if (thread) { await univerAPI.replyCommentAsync({ unitId: thread.unitId, subUnitId: thread.subUnitId, threadId: thread.threadId, content: 'Reviewed.', })}共享讨论
共享讨论需要先通过 Server SDK 集成 Comment Service 和 Endpoint,再在协同与许可证配置之后注册 @univerjs-pro/thread-comment-datasource 的 UniverThreadCommentDataSourcePlugin。内置数据源访问 /universer-api/comment/unit/{unitId}/... 和 /universer-api/user/list,请通过应用暴露这些路由。服务端需要独立验证评论读写权限,不能仅依赖文档编辑权限。
你觉得这篇文档如何?