如何追踪Dexie的UseLiveQuery完成状态并处理加载与空数据场景
实现方案
直接通过条件渲染结合useLiveQuery返回的状态值就能快速实现需求,不需要额外复杂逻辑:
- 先解构
useLiveQuery返回的加载状态和数据:
const { isLoading, data: items } = useLiveQuery(/* 你的查询配置 */);
- 按优先级判断渲染内容:
- 当
isLoading为true时,渲染加载器组件 - 当加载完成且
items为空数组时,渲染“未找到组件” - 否则渲染正常数据内容
完整代码示例:
function YourComponent() { const { isLoading, data: items } = useLiveQuery(/* 替换成你的查询参数 */); // 加载中显示加载器 if (isLoading) { return <div className="loader">加载中...</div>; } // 数据为空显示未找到 if (!items || items.length === 0) { return <div className="no-result">未找到组件</div>; } // 正常渲染数据 return ( <div className="content"> {items.map(item => ( <div key={item.id}>{item.name}</div> ))} </div> ); }
额外提示
- 如果你的
useLiveQuery还返回错误状态(比如error),可以额外加一层错误处理的条件渲染,避免异常情况 - 可以把加载器、空状态组件封装成独立组件,方便在多个地方复用
内容的提问来源于stack exchange,提问作者Omroboto
相关产品推荐
相关产品推荐

