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

问题 #6685💬 已回答提出于 2026年1月12日作者 shery0 个反应

自定义组件样式在删除和重新添加后不会被应用

快速解答作者 mdmontesinos

我也遇到类似问题,重新添加的组件拥有正确的样式属性: <img width=“1112” height=“17” alt=“Image” src=“https://github.com/user-attachments/assets/474011c4-b1be-48df-9aa8-14c3dcdfc68d” /> 但如果我用“查看代码”按钮,CSS就没有注入,在我的情况下,它们甚至不在DOM里。组件本身能用,因为刚加入时样式确实注入了,运行正常。只有移除并重新添加后才会失败。 我也测试过用“component.replaceWith(newComponent)”函数代替“component.remove()”和“editor.ad...

阅读下方完整回答 ↓

问题

GrapesJS版本 [x] 我确认使用最新版本的GrapesJS 你用的是什么浏览器? Chrome v143.0.7499.193 可复制演示链接 https://codesandbox.io/p/sandbox/2l3887 描述一下那个虫子 如何复现这个漏洞? 打开页面并加载 GrapesJS 编辑器 选择行组件并删除它 点击左侧边栏的行组件,向画布添加行 预期的行为是什么? 新添加的行组件应显示正确的样式(白色背景、边框、边框半径、填充等)。 目前的行为是什么? 重新添加 Row 组件后,styles 属性中定义的 .gjs-row CSS 类未应用到 DOM 元素,导致样式缺失,组件显示为无样式的纯文本容器 如果需要执行某些代码以重现该漏洞,请将其粘贴到下面: “''js 行组件定义 编辑。Components.addType('row', { 型号:{ 默认值:{ 名称:“Row”, 标签名称:“div”, 可拖拽:确实, Droppable:确实如此, 属性:{ 类:'GJS-ROW' }, 风格: .gjs-row { 显示:flex; 弹性缠绕:缠绕; 缝隙:16像素; 填充:16像素; 背景色:#fff; 边框:1px 实心 #e5e7eb; 边界半径:8px; 边距-底部:16px; } , 组成要素: [ { 类型:'column' }, { 类型:'c...

回答(4)

mdmontesinos2026年2月17日

我也遇到类似问题,重新添加的组件拥有正确的样式属性: <img width=“1112” height=“17” alt=“Image” src=“https://github.com/user-attachments/assets/474011c4-b1be-48df-9aa8-14c3dcdfc68d” /> 但如果我用“查看代码”按钮,CSS就没有注入,在我的情况下,它们甚至不在DOM里。组件本身能用,因为刚加入时样式确实注入了,运行正常。只有移除并重新添加后才会失败。 我也测试过用“component.replaceWith(newComponent)”函数代替“component....

artf2026年2月18日

@mdmontesinos你的用法不正确,“样式”必须在组件定义中定义,且不被期望改变。另外,如果组件预期会被重用,ID会被重新创建,依赖类,尤其是样式,那用ID定义组件是不对的。

但@shery的报告似乎是真实的;样式缓存可能有问题。

mdmontesinos2026年2月18日

@artf我用ID是因为我的项目里总会有一个该组件的实例。我的用例是组件外部设计成作为“后台”,然后导入到使用该组件的项目中。因此,当外部组件更新时,我需要在项目中更新它,这也是我尝试重建它的原因,它可能会修改组件或样式。有没有办法强制刷新样式?

GJS Helper2026年5月17日

这是在GrapesJS中直接在自定义组件的styles属性中定义静态类型级样式时遇到的常见问题。你观察到的行为并非GrapesJS核心功能的bug,而是其内部样式管理器优化和去重CSS规则的结果。 根本原因解释 当你在组件defaults中使用styles属性定义样式时: 初始添加: 第一次添加“行”组件时,GrapesJS会解析CSS字符串中的styles属性,并将这些规则注入画布样式表(通常在iframe的<head>内)。组件随后正确地拾取这些样式,因为.gjs-row类存在于其DOM元素中。 删除: 当你删除“行”组件时,其DOM元素会从画布中移除。然而,GrapesJS的样式管理器...

相关问答

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

与此问题匹配的付费插件

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

查看全部插件

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

免费方案

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

浏览免费插件 →
高级方案

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

浏览高级插件 →

相关教程

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

全部教程 →

浏览插件分类

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