diff --git a/packages/reffuse/src/ReffuseNamespace.ts b/packages/reffuse/src/ReffuseNamespace.ts index 50dbea1..c4e2b21 100644 --- a/packages/reffuse/src/ReffuseNamespace.ts +++ b/packages/reffuse/src/ReffuseNamespace.ts @@ -23,6 +23,7 @@ export abstract class ReffuseNamespace { declare ["constructor"]: ReffuseNamespaceClass constructor() { + this.SubRef = this.SubRef.bind(this as any) as any this.SubscribeRefs = this.SubscribeRefs.bind(this as any) as any this.RefState = this.RefState.bind(this as any) as any this.SubscribeStream = this.SubscribeStream.bind(this as any) as any @@ -483,6 +484,17 @@ export abstract class ReffuseNamespace { } + SubRef, R>( + this: ReffuseNamespace, + props: { + readonly parent: SubscriptionRef.SubscriptionRef, + readonly path: P, + readonly children: (subRef: SubscriptionSubRef.SubscriptionSubRef, B>) => React.ReactNode + }, + ): React.ReactNode { + return props.children(this.useSubRef(props.parent, props.path)) + } + SubscribeRefs< const Refs extends readonly SubscriptionRef.SubscriptionRef[], R,