useSyncState()
function useSyncState(): SyncStateResource;
Defined in: rxdb-react/src/use-sync-state.ts:49
读取当前数据库的同步状态。
Returns
Throws
组件树中没有 Provider、Provider 没拿到 db、异步 source 尚未就绪时各抛一条
不同的文案;异步 source 创建失败时原样抛出创建异常(与 useRxDB 同语义)
Example
const sync = useSyncState();
return sync.online ? null : <span>离线 · 待推 {sync.pendingCount} 条</span>;
Remarks
走 useSyncExternalStore 而不是 useState + useEffect:状态源在 React 之外
(RxJS 流),而 useEffect 版本会在挂载后多渲染一帧「初值」再切到真值 ——
面板会先闪一下「在线、0 条待推」,恰好是最不该撒的谎。getSnapshot 读的是 hub 自己
缓存的那份对象,同一状态跨 render 引用不变,因此不会引起额外重渲染。
第三个参数(getServerSnapshot)与客户端读同一份快照:hub 在库构造时就存在,
SSR 下同样有值可读,不需要另立一套服务端初值。
数据库取不到时抛错而不是返回一份「一切正常」的默认值:那会把「面板没接上」 伪装成「没有待推变更」,恰好是最需要出声的时候不出声。