From 15c1fdd54c48a01db6d7504a91cc8f213172131c Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 15 Jan 2025 02:06:46 +0100 Subject: [PATCH] useMergeAll --- packages/reffuse/src/ReffuseContext.tsx | 14 ++++++-------- 1 file changed, 6 insertions(+), 8 deletions(-) diff --git a/packages/reffuse/src/ReffuseContext.tsx b/packages/reffuse/src/ReffuseContext.tsx index 0058b30..28ee155 100644 --- a/packages/reffuse/src/ReffuseContext.tsx +++ b/packages/reffuse/src/ReffuseContext.tsx @@ -51,19 +51,17 @@ export function make() { return new ReffuseContext() } - -export function useMergeMany< +export function useMergeAll< const Contexts extends readonly ReffuseContext[] >( - contexts: Contexts -): { - [K in keyof Contexts]: R -} { - + ...contexts: Contexts +): Context.Context<{ [K in keyof Contexts]: R }[number]> { + const values = contexts.map(v => React.use(v.Context)) + return React.useMemo(() => Context.mergeAll(...values), values) } const context1 = make<{ readonly service1: true }>() const context2 = make<{ readonly service2: true }>() -const res = useMergeMany([context1, context2]) +const res = useMergeAll(context1, context2)