PageKit — 可自托管的 GrapesJS 建站工具,附完整源码。 获取抢先体验

问题 #6142💬 已回答提出于 2024年9月10日作者 rhoenerSBS0 个反应

页面重做无法正常工作

快速解答作者 artf

谢谢你的报告@rhoenerSBS

阅读下方完整回答 ↓

问题

GrapesJS 版本

  • 我确认使用最新版本 GrapesJS

你用的是什么浏览器?

Chrome v128

可复制演示链接

https://app.grapesjs.com/工作室

描述一下那个虫子

添加页面后,通过撤销删除,再用重做重新添加,页面却无法正常工作。图层管理器在选择页面时不会更新。它也没有移除前的内容,似乎也没有实体,因为无法向该页面添加新组件。我在本地开发中注意到了这种情况,但由于 grapesjs 的 Studio 版本也出现了,我提交了工作室版本的链接以重现此问题。

如何复现这个漏洞?

  1. 打开 GrapesJs 工作室示例
  2. 添加页面
  3. 点击撤销 - >页面从列表中移除
  4. 点击重做 ->页面再次添加
  5. 点击重做添加的页面查看行为

预期的行为是什么? 页面应添加之前的内容,且内容在重做后仍可编辑。

目前的行为是什么? 添加带有重做功能的页面后,页面内容无法编辑,图层管理器在切换页面时无法正确更新,页面内容丢失。

行为准则

  • 我同意遵守本项目的行为准则

回答(2)

artf• 2024年9月19日

谢谢你的报告@rhoenerSBS

GJS Helper• 2026年5月17日

这确实是GrapesJS的撤销/重做机制中的一个bug,特别是在处理页面添加和删除时。你描述的行为符合“重做”操作后页面内部状态恢复不完整的情况。 根本原因 当页面在GrapesJS中添加时,会创建一个Page模型,关键是会关联一个根 Component(通常是带有 tagName: 'body'的 wrapper),以保存页面的所有内容。当你“撤销”页面添加时,Page模型及其关联的根组件会被移除或销毁。错误发生在“重做”操作期间:虽然Page模型本身被重新添加到编辑者的页面集合中,但其关键component属性(包含页面所有内容的根组件body)未被正确恢复或重新初始化。 没有这个根bo...

相关问答

通过相似的问题讨论继续研究。

与此问题匹配的付费插件

根据问题关键词和标签相关性精选,助你更快交付。

查看全部插件

正在加载付费插件推荐……

免费方案

在以下平台查看开源 GrapesJS 插件: GitHub 或在我们的免费目录中快速搜索。

浏览免费插件 →
高级方案

高级插件提供支持、定期更新和生产就绪的功能——为你节省数天的集成工作。

浏览高级插件 →

相关教程

关于同一主题的深入指南。

全部教程 →

浏览插件分类

直接跳转到市场上的插件分类页面。