Skip to content

Commit 8305fc8

Browse files
committed
Refactor stack to be recursive
1 parent 0050d3e commit 8305fc8

File tree

1 file changed

+15
-17
lines changed

1 file changed

+15
-17
lines changed

src/index.tsx

Lines changed: 15 additions & 17 deletions
Original file line numberDiff line numberDiff line change
@@ -9,22 +9,20 @@ export default function ProviderStack({
99
providers,
1010
children,
1111
}: ProviderStackProps) {
12-
const Providers = useMemo(
13-
() =>
14-
providers.reduceRight(
15-
(Acc, Provider) =>
16-
Object.assign(
17-
() => (
18-
<Provider>
19-
<Acc />
20-
</Provider>
21-
),
22-
{ displayName: Provider.displayName },
23-
),
24-
() => <>{children}</>,
25-
),
26-
[children, providers],
27-
);
12+
const { Provider, remainingProviders, isFinal } = useMemo(() => {
13+
const [Provider, ...remainingProviders] = providers;
14+
return {
15+
Provider,
16+
remainingProviders,
17+
isFinal: providers.length === 0,
18+
};
19+
}, [providers]);
2820

29-
return <Providers />;
21+
return isFinal ? (
22+
<>{children}</>
23+
) : (
24+
<Provider>
25+
<ProviderStack providers={remainingProviders}>{children}</ProviderStack>
26+
</Provider>
27+
);
3028
}

0 commit comments

Comments
 (0)