@@ -51,11 +51,9 @@ export function make<R = never>() {
|
||||
return new ReffuseContext<R>()
|
||||
}
|
||||
|
||||
export function useMergeAll<
|
||||
const Contexts extends readonly ReffuseContext<any>[]
|
||||
>(
|
||||
...contexts: Contexts
|
||||
): Context.Context<{ [K in keyof Contexts]: R<Contexts[K]> }[number]> {
|
||||
export function useMergeAll<T extends Array<unknown>>(
|
||||
...contexts: [...{ [K in keyof T]: ReffuseContext<T[K]> }]
|
||||
): Context.Context<T[number]> {
|
||||
const values = contexts.map(v => React.use(v.Context))
|
||||
return React.useMemo(() => Context.mergeAll(...values), values)
|
||||
}
|
||||
@@ -71,3 +69,7 @@ export function useMergeAllLayers<
|
||||
...Array.map(values, context => Layer.effectContext(Effect.succeed(context)))
|
||||
) as Layer.Layer<any>, values)
|
||||
}
|
||||
|
||||
declare const context1: ReffuseContext<never>
|
||||
declare const context2: ReffuseContext<"prout">
|
||||
const res = useMergeAll(context1, context2)
|
||||
|
||||
Reference in New Issue
Block a user