From fc097f4bf6e2c2c6bc238ab2ec2cc5bb95f3be8a Mon Sep 17 00:00:00 2001 From: Prev Wong Date: Mon, 17 Jun 2024 21:53:25 +0800 Subject: [PATCH] fix: site editor hmr bug --- site/pages/index.tsx | 17 ++++++++++++++--- 1 file changed, 14 insertions(+), 3 deletions(-) diff --git a/site/pages/index.tsx b/site/pages/index.tsx index 28f9d3af..ba83ab8c 100644 --- a/site/pages/index.tsx +++ b/site/pages/index.tsx @@ -2,6 +2,7 @@ import { Parser } from '@rekajs/parser'; import { RekaProvider } from '@rekajs/react'; import { useRouter } from 'next/router'; import * as React from 'react'; +import { flushSync } from 'react-dom'; import { HeaderToolbar } from '@app/components/header/HeaderToolbar'; import { SEO } from '@app/components/seo'; @@ -25,6 +26,17 @@ const AppEditor = () => { const routerRef = React.useRef(router); routerRef.current = router; + const disposeEditor = React.useCallback( + (editor: Editor) => { + flushSync(() => { + setEditor(null); + }); + + editor.dispose(); + }, + [setEditor] + ); + React.useEffect(() => { if (!router.isReady) { return; @@ -37,10 +49,9 @@ const AppEditor = () => { setEditor(editor); return () => { - setEditor(null); - editor.dispose(); + disposeEditor(editor); }; - }, [setEditor, router.isReady]); + }, [setEditor, disposeEditor, router.isReady]); React.useEffect(() => { if (!editor) {