Skip to content

Commit 53fba84

Browse files
committed
fix: layer node console warning (#246)
1 parent f089475 commit 53fba84

File tree

1 file changed

+21
-19
lines changed

1 file changed

+21
-19
lines changed

packages/layers/src/layers/LayerNode.tsx

Lines changed: 21 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -1,5 +1,5 @@
11
import { useEditor, ROOT_NODE } from '@craftjs/core';
2-
import React, { useRef, useEffect } from 'react';
2+
import React, { useRef, useEffect, useLayoutEffect, useState } from 'react';
33

44
import { LayerContextProvider } from './LayerContextProvider';
55
import { useLayer } from './useLayer';
@@ -18,12 +18,21 @@ export const LayerNode: React.FC = () => {
1818
query.node(state.events.selected).ancestors(true).includes(id),
1919
}));
2020

21-
const { actions, renderLayer, expandRootOnLoad } = useLayerManager(
22-
(state) => ({
23-
renderLayer: state.options.renderLayer,
24-
expandRootOnLoad: state.options.expandRootOnLoad,
25-
})
26-
);
21+
const {
22+
actions: { registerLayer, toggleLayer },
23+
renderLayer,
24+
expandRootOnLoad,
25+
} = useLayerManager((state) => ({
26+
renderLayer: state.options.renderLayer,
27+
expandRootOnLoad: state.options.expandRootOnLoad,
28+
}));
29+
30+
const [isRegistered, setRegistered] = useState(false);
31+
32+
useLayoutEffect(() => {
33+
registerLayer(id);
34+
setRegistered(true);
35+
}, [registerLayer, id]);
2736

2837
const expandedRef = useRef<boolean>(expanded);
2938
expandedRef.current = expanded;
@@ -34,24 +43,17 @@ export const LayerNode: React.FC = () => {
3443

3544
useEffect(() => {
3645
if (!expandedRef.current && shouldBeExpanded) {
37-
actions.toggleLayer(id);
46+
toggleLayer(id);
3847
}
39-
}, [actions, id, shouldBeExpanded]);
48+
}, [toggleLayer, id, shouldBeExpanded]);
4049

4150
useEffect(() => {
4251
if (shouldBeExpandedOnLoad.current) {
43-
actions.toggleLayer(id);
52+
toggleLayer(id);
4453
}
45-
}, [actions, id]);
46-
47-
const initRef = useRef<boolean>(false);
48-
49-
if (!initRef.current) {
50-
actions.registerLayer(id);
51-
initRef.current = true;
52-
}
54+
}, [toggleLayer, id]);
5355

54-
return data ? (
56+
return data && isRegistered ? (
5557
<div className={`craft-layer-node ${id}`}>
5658
{React.createElement(
5759
renderLayer,

0 commit comments

Comments
 (0)