refactor: use domNode prop to get edge-label-renderer

This commit is contained in:
GeoffreyLiu
2022-11-14 19:55:56 +08:00
parent 23aa8bb270
commit 038835772f
@@ -4,19 +4,17 @@ import { useStore } from '../../hooks/useStore';
import { ReactFlowState } from '../../types'; import { ReactFlowState } from '../../types';
const selector = (s: ReactFlowState) => ({ const selector = (s: ReactFlowState) => ({
d3Selection: s.d3Selection, edgeLabelRenderer: s.domNode?.querySelector('.react-flow__edgelabel-renderer'),
}); });
function EdgeLabelRenderer({ children }: { children: ReactNode }) { function EdgeLabelRenderer({ children }: { children: ReactNode }) {
const { d3Selection } = useStore(selector); const { edgeLabelRenderer } = useStore(selector);
const edgeLabelRendererElement = d3Selection?.select('.react-flow__edgelabel-renderer').node(); if (!edgeLabelRenderer) {
if (!edgeLabelRendererElement || !(edgeLabelRendererElement instanceof HTMLDivElement)) {
return null; return null;
} }
return createPortal(children, edgeLabelRendererElement); return createPortal(children, edgeLabelRenderer);
} }
export default EdgeLabelRenderer; export default EdgeLabelRenderer;