Calling destroy method breaks the editor ( React app )
Are you able to provide a reproducible demo as I'm not able to reproduce it on my end?
Read full answer below βQuestion
GrapesJS version
- I confirm to use the latest version of GrapesJS
What browser are you using?
Chrome 109.0.5414.119
Reproducible demo link
Describe the bug
How to reproduce the bug?
- add event listener to outside click
- call destroy method
What is the expected behavior?
- Destroying without errors
What is the current behavior? Parser is undefined, but it tries to call its method. Uncaught (in promise) TypeError: Cannot read properties of undefined (reading 'parseHtml') Callstack:
n.parseString (Components.ts:225:1)
at n.resetFromString (Components.ts:107:1)
at n.syncContent (ComponentTextView.ts:150:1)
at n.<anonymous> (ComponentTextView.ts:122:1)
at ComponentLink.ts:44:1
at Object.next (ComponentLink.ts:44:1)
at s (ComponentLink.ts:44:1)
document.addEventListener('click', function (event) {
var $target = event.target;
if($el && editorReady.current && !$target?.closest(`#${id}`)?.length) {
editorRef?.current?.destroy();
}
});
Code of Conduct
- I agree to follow this project's Code of Conduct
Answers (2)
Are you able to provide a reproducible demo as I'm not able to reproduce it on my end?
Thanks for reporting this, @maliuta-oleksandr.
Great question about calling destroy method breaks the editor ( React app ). The recommended approach with Components is to use the event-driven API.
Start here:
- Check the GrapesJS documentation for your specific module
- Look for the
on()event listener method - Most operations can be achieved by listening to editor and component events
Common patterns:
// Listen for changes
editor.on('change', () => console.log('something changed'));
// Component lifecycle
editor.on('component:mount', (c) => console.log('component ready', c));
editor.on('component:update', (c) => console.log('component updated', c));
If you're still stuck:
- Share a minimal CodeSandbox reproduction
- Include what you've already tried
- Mention your GrapesJS version
- The community is here to help!
Related Questions and Answers
Continue research with similar issue discussions.
Issue #4187
Editor Destroy method throws an error in React
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome 98 Reproducible demo link https://c...
Issue #6683
Modals close on mouseup event outside of modal rather than a full click
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? Chrome 143.0.7499.169 Reproducible demo li...
Issue #6409
Cannot drag to move components on mobile
GrapesJS version [x] I confirm to use the latest version of GrapesJS What browser are you using? Chrome v133 Reproducible demo link https:/...
Issue #5631
Undo manager add() not working as expected
GrapesJS version [X] I confirm to use the latest version of GrapesJS What browser are you using? Chrome v91 Reproducible demo link -- Descr...
Paid Plugins That Match This Issue
Curated by issue keywords and label relevance to help you ship faster.
Loading paid plugin recommendations...
Check the open-source GrapesJS plugins on GitHub or run a quick search in our free catalog.
Browse free plugins βPremium plugins ship with support, regular updates, and production-ready features β save days of integration work.
Browse premium plugins βRelated tutorials
In-depth guides on the same topic.
Tutorial
How to Build a Production GrapesJS Editor: The Complete Walkthrough of Brief, Preset, Plugins, and Services
A complete walkthrough of building a production GrapesJS editor: how to choose a preset, pick plugins, and scope setup services without burning a sprint.
Tutorial
GrapesJS Inline RTE Plugins Update: CKEditor 5 v0.1.4 and Froala Inline Text Editor
CKEditor 5 Inline for GrapesJS v0.1.4 fixes Studio SDK toolbar clipping, iframe injection and link balloon bugs. Compare with Froala Inline β both $69.
Tutorial
Embed GrapesJS in Your SaaS: A Weekend Guide
Embed GrapesJS in your SaaS and ship a white-label page builder over a weekend. Honest tradeoffs, real code, and the plugins that close the UX gap.
Browse Plugin Categories
Jump directly to plugin category pages on the marketplace.