Skip to content

Commit f2036e3

Browse files
authored
fix: move BlockIdContext.Provider inside ConstructorItem and ConstructorLoadable (#201)
1 parent 54e9e90 commit f2036e3

File tree

3 files changed

+34
-18
lines changed

3 files changed

+34
-18
lines changed

src/containers/PageConstructor/components/ConstructorBlocks/ConstructorBlocks.tsx

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,6 @@ import React, {Fragment, ReactElement, useContext} from 'react';
33

44
import {getBlockKey} from '../../../../utils';
55
import {InnerContext} from '../../../../context/innerContext';
6-
import {BlockIdContext} from '../../../../context/blockIdContext';
76
import {Block, ConstructorItem as ConstructorItemType, ShouldRenderBlock} from '../../../../models';
87
import {ConstructorLoadable} from '../ConstructorLoadable';
98
import {ConstructorItem} from '../ConstructorItem';
@@ -37,6 +36,7 @@ export const ConstructorBlocks = ({items, shouldRenderBlock}: ConstructorBlocksP
3736
if ('loadable' in item && item.loadable) {
3837
const {source, serviceId, params} = item.loadable;
3938
const config = _.get(loadables, source);
39+
4040
if (!config) {
4141
return null;
4242
}
@@ -57,9 +57,9 @@ export const ConstructorBlocks = ({items, shouldRenderBlock}: ConstructorBlocksP
5757
}
5858

5959
itemElement = (
60-
<BlockIdContext.Provider value={blockId} key={blockId}>
61-
<ConstructorItem data={item}>{children}</ConstructorItem>
62-
</BlockIdContext.Provider>
60+
<ConstructorItem data={item} key={blockId} blockKey={blockId}>
61+
{children}
62+
</ConstructorItem>
6363
);
6464
}
6565

Lines changed: 17 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,22 +1,35 @@
11
import React, {useContext} from 'react';
22
import {ConstructorItem as ConstructorItemType, WithChildren} from '../../../../models';
33
import {InnerContext} from '../../../../context/innerContext';
4+
import {BlockIdContext} from '../../../../context/blockIdContext';
45

56
export interface ConstructorItemProps {
67
data: ConstructorItemType;
8+
blockKey?: string;
79
}
810

9-
export const ConstructorItem = ({data, children}: WithChildren<ConstructorItemProps>) => {
11+
export const ConstructorItem = ({
12+
data,
13+
blockKey = '',
14+
children,
15+
}: WithChildren<ConstructorItemProps>) => {
1016
const {itemMap} = useContext(InnerContext);
1117
const {type, ...rest} = data;
1218

1319
const Component = itemMap[type] as React.ComponentType<
1420
React.ComponentProps<typeof itemMap[typeof type]>
1521
>;
1622

17-
return <Component {...rest}>{children}</Component>;
23+
return (
24+
<BlockIdContext.Provider value={blockKey}>
25+
<Component {...rest}>{children}</Component>
26+
</BlockIdContext.Provider>
27+
);
1828
};
1929

20-
export const ConstructorHeader = ({data}: Pick<ConstructorItemProps, 'data'>) => (
21-
<ConstructorItem data={data} key={data.type} />
30+
export const ConstructorHeader = ({
31+
data,
32+
blockKey = '',
33+
}: Pick<ConstructorItemProps, 'data' | 'blockKey'>) => (
34+
<ConstructorItem data={data} key={data.type} blockKey={blockKey} />
2235
);

src/containers/PageConstructor/components/ConstructorLoadable/ConstructorLoadable.tsx

Lines changed: 13 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -3,6 +3,7 @@ import React, {useContext} from 'react';
33
import Loadable, {LoadableComponentsProps} from '../../../Loadable/Loadable';
44
import {LoadableConfigItem} from '../../../../models';
55
import {InnerContext} from '../../../../context/innerContext';
6+
import {BlockIdContext} from '../../../../context/blockIdContext';
67

78
interface ConstructorLoadableProps
89
extends Omit<LoadableComponentsProps, 'Component' | 'ChildComponent' | 'fetch'> {
@@ -19,15 +20,17 @@ export const ConstructorLoadable = (props: ConstructorLoadableProps) => {
1920
>;
2021

2122
return (
22-
<Loadable
23-
key={blockKey}
24-
block={block}
25-
blockKey={blockKey}
26-
Component={Component}
27-
ChildComponent={ChildComponent}
28-
fetch={fetch}
29-
serviceId={serviceId}
30-
params={params}
31-
/>
23+
<BlockIdContext.Provider value={blockKey} key={blockKey}>
24+
<Loadable
25+
key={blockKey}
26+
block={block}
27+
blockKey={blockKey}
28+
Component={Component}
29+
ChildComponent={ChildComponent}
30+
fetch={fetch}
31+
serviceId={serviceId}
32+
params={params}
33+
/>
34+
</BlockIdContext.Provider>
3235
);
3336
};

0 commit comments

Comments
 (0)