ARTICLE DETAIL

资讯详情

深耕网站视觉设计与运营推广的一线实战洞察。

Perspective 状态持久化:保存与恢复 UI 配置的完整指南

Perspective 状态持久化:保存与恢复 UI 配置的完整指南 Perspective 状态持久化保存与恢复 UI 配置的完整指南【免费下载链接】perspectiveA data visualization and analytics component, especially well-suited for large and/or streaming datasets.项目地址: https://gitcode.com/GitHub_Trending/pe/perspectivePerspective是一款专为大数据集和流式数据设计的数据可视化与分析前端组件。本篇教程将带你完整掌握它的状态持久化能力——通过save()/restore()API一键保存或恢复视图的全部 UI 配置让用户的筛选、分组、配色等操作刷新页面后依然保留。上图展示了 Perspective 组件的实际效果同一个数据源可以在数据表格、统计图表、热力图等多个面板中同时呈现这些面板布局与配置正是状态持久化要保存的核心对象。为什么需要保存与恢复 UI 配置perspective-viewer组件本身是持久化persistent的除数据本身外它的全部 UI 状态都能被序列化和反序列化包括✅ 列选择、筛选、排序、分组Pivot✅ 表达式Expressions列✅ 数据网格的样式设置、配色与渐变✅ 配置面板的显示状态✅ 多面板布局Layout与跨面板筛选状态这覆盖了四类典型场景初始状态load()调用后为视图设定默认外观局部更新只修改某一项属性其余保持不变重置默认把部分或全部属性恢复到与数据相关的默认值用户持久化把配置存到localStorage或服务器用户下次打开自动还原详细说明可参考官方文档save_restore.md。核心 API 一览API作用save(options?)序列化单个面板的配置restore(config, options?)把配置应用到单个面板saveWorkspace()序列化整个元素——所有面板 布局 全局筛选restoreWorkspace(config)恢复整个元素的配置reset(all?)重置配置传true连表达式一起重置完整方法表见 viewer.md。三步保存与恢复最小可用流程第一步读取当前配置。save()默认返回一个 JSON 友好的 JavaScript 对象也支持stringbase64 编码等更紧凑的格式const json_token await elem.save(); // JSON 对象人类可读 const string_token await elem.save(string); // 字符串体积更小第二步存储 token。把它写入localStorage、URL 参数或服务器即可。第三步恢复配置。任意一个 schema 相同的perspective-viewer都可以用restore()还原await elem.restore(json_token); await elem.restore(string_token);⚠️常见坑restore()会按 token 的类型分派处理。如果传入了JSON.stringify后的字符串它会误认为是 base64 编码从而报错——务必让 save 和 restore 的类型保持一致。长尾技巧只更新单个属性使用 JSON 格式时你可以用restore()精确控制任意一个属性其余属性不受影响await elem.restore({ plugin: X Bar }); // 切换图表类型 await elem.restore({ filter: [[Sales, , 100]] }); // 添加筛选 await elem.restore({ sort: [[Profit, desc]] }); // 添加排序不影响筛选 await elem.restore({ filter: undefined }); // 只重置筛选保留排序 await elem.reset(); // 全部恢复默认实用技巧想快速得到某个配置的 token在浏览器里手动调好视图然后在开发者控制台执行copy(await document.querySelector(perspective-viewer).save())配置就被复制到剪贴板了。JSON 格式人类可读后续微调非常方便。多面板 Workspace 的完整保存save()/restore()只作用于单个默认是激活的面板可通过{ panel: my-panel }指定。如果要序列化整个元素——所有面板、布局乃至跨面板筛选状态请改用 Workspace 级 APIconst workspace_token await elem.saveWorkspace(); await elem.restoreWorkspace(workspace_token);注意saveWorkspace()返回的是WorkspaceConfig含version、layout、panels等键传给单面板的restore()时布局信息会被忽略不要混用。此外saveWorkspace()还支持颜色**调色板palette**机制各面板中重复出现的颜色会被提取为 CSS 自定义属性引用顶层palette映射集中存放定义方便统一注入品牌主题。传{ full_palette: true }可导出完整调色板实现对称往返。详见 save_restore.md 的 Colors, palettes and gradients 章节。事件驱动自动持久化用户操作监听perspective-config-update事件就能在用户每次交互后自动获取最新配置配合localStorage即可实现刷新不丢状态elem.addEventListener(perspective-config-update, function (event) { const config elem.save(); localStorage.setItem(my-viewer-config, JSON.stringify(config)); });事件细节含detail.config、detail.panel字段说明见 events.md。React 用户受控组件自动 restore如果你使用 React 封装Perspective组件会声明式地处理整个生命周期——load()数据、restore()配置都由 props 驱动无需手动调用Perspective client{client} config{savedConfig} /当传入的是 Workspace 配置含panels键时组件会自动改走restoreWorkspace()。实现源码位于 packages/react/src/viewer.tsx用法可参考 react.md。常见问题速查Qrestore()报错了检查 token 类型是否与save()一致并确认新表的schema 与原表相同——很多配置依赖列名与列类型数据可以不同schema 一般不能变。Q跨页面/重新加载后恢复失败save()token 中的table字段在页面刷新后可能与新表名不匹配。建议在load()后手动指定table或参考 viewer.md 中的处理方式。Q想重置回默认怎么办调用await elem.reset()若只是关闭配置面板用await elem.restore({ settings: false })。更多问答见 FAQ.md 的 How do I save and restore the viewer state?。总结需求推荐方案保存单个面板外观save()restore()保存多面板布局 全部面板saveWorkspace()restoreWorkspace()局部更新某一项配置restore({ 属性: 值 })用户配置自动持久化监听perspective-config-update事件重置为默认reset()掌握这套状态持久化机制后你既能给仪表盘设定开箱即用的初始视图也能让每位用户的个性化配置记住自己——这正是构建专业级数据分析应用的关键一步。完整文档入口docs/md/。【免费下载链接】perspectiveA data visualization and analytics component, especially well-suited for large and/or streaming datasets.项目地址: https://gitcode.com/GitHub_Trending/pe/perspective创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
返回列表