From d56481021a570477e6f9a18cf06b47a1c7854bf4 Mon Sep 17 00:00:00 2001 From: Prev Wong Date: Fri, 31 May 2024 17:56:18 +0800 Subject: [PATCH] fix: don't render node if it doesn't exist --- packages/core/src/nodes/NodeElement.tsx | 2 +- packages/core/src/render/RenderNode.tsx | 15 +++++++-------- 2 files changed, 8 insertions(+), 9 deletions(-) diff --git a/packages/core/src/nodes/NodeElement.tsx b/packages/core/src/nodes/NodeElement.tsx index 6e899f353..ee0acd0a9 100644 --- a/packages/core/src/nodes/NodeElement.tsx +++ b/packages/core/src/nodes/NodeElement.tsx @@ -15,7 +15,7 @@ export const NodeElement: React.FC> = ({ id, render }) => { return ( - + ); }; diff --git a/packages/core/src/render/RenderNode.tsx b/packages/core/src/render/RenderNode.tsx index 541505b51..0d5dcef8a 100644 --- a/packages/core/src/render/RenderNode.tsx +++ b/packages/core/src/render/RenderNode.tsx @@ -3,24 +3,23 @@ import React from 'react'; import { DefaultRender } from './DefaultRender'; import { useInternalEditor } from '../editor/useInternalEditor'; -import { useInternalNode } from '../nodes/useInternalNode'; type RenderNodeToElementType = { + id: string; render?: React.ReactElement; }; + export const RenderNodeToElement: React.FC> = ({ render }) => { - const { hidden } = useInternalNode((node) => ({ - hidden: node.data.hidden, - })); - - const { onRender } = useInternalEditor((state) => ({ +>> = ({ id, render }) => { + const { onRender, exists, isNodeHidden } = useInternalEditor((state) => ({ onRender: state.options.onRender, + exists: !!state.nodes[id], + isNodeHidden: state.nodes[id]?.data.hidden ?? false, })); // don't display the node since it's hidden - if (hidden) { + if (!exists || isNodeHidden) { return null; }