From 3980c107479a295f06a74feeb6497ce86cf45e0a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Wed, 30 Apr 2025 21:41:58 +0200 Subject: [PATCH] Fix --- packages/reffuse/src/ReffuseNamespace.ts | 11 +++++++---- 1 file changed, 7 insertions(+), 4 deletions(-) diff --git a/packages/reffuse/src/ReffuseNamespace.ts b/packages/reffuse/src/ReffuseNamespace.ts index 5a78367..e1890bb 100644 --- a/packages/reffuse/src/ReffuseNamespace.ts +++ b/packages/reffuse/src/ReffuseNamespace.ts @@ -378,12 +378,15 @@ export abstract class ReffuseNamespace { ]) } - useRef( + useRef( this: ReffuseNamespace, - initialValue: A, + initialValue: () => A | Effect.Effect, ): SubscriptionRef.SubscriptionRef { return this.useMemo( - () => SubscriptionRef.make(initialValue), + () => pipe(initialValue(), + v => Effect.isEffect(v) ? v : Effect.succeed(v), + Effect.flatMap(SubscriptionRef.make), + ), [], { doNotReExecuteOnRuntimeOrContextChange: true }, // Do not recreate the ref when the context changes ) @@ -393,7 +396,7 @@ export abstract class ReffuseNamespace { this: ReffuseNamespace, value: A, ): SubscriptionRef.SubscriptionRef { - const ref = this.useRef(value) + const ref = this.useRef(() => value) this.useEffect(() => Ref.set(ref, value), [value], { doNotReExecuteOnRuntimeOrContextChange: true }) return ref }