From 1f14e8be6bdbd03e88354c9ccca4f78633dc5655 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 20 Oct 2025 21:24:27 +0200 Subject: [PATCH] Add useOnChange --- packages/effect-fc/src/Component.ts | 16 +++++++++++++++- 1 file changed, 15 insertions(+), 1 deletion(-) diff --git a/packages/effect-fc/src/Component.ts b/packages/effect-fc/src/Component.ts index c216237..9f0e1e5 100644 --- a/packages/effect-fc/src/Component.ts +++ b/packages/effect-fc/src/Component.ts @@ -415,7 +415,21 @@ export const useOnMount: { } = Effect.fnUntraced(function* ( f: () => Effect.Effect ) { - const runtime = yield* Effect.runtime() + const runtime = yield* Effect.runtime() // biome-ignore lint/correctness/useExhaustiveDependencies: only computed on mount return yield* React.useMemo(() => Runtime.runSync(runtime)(Effect.cached(f())), []) }) + +export const useOnChange: { + ( + f: () => Effect.Effect, + deps: React.DependencyList, + ): Effect.Effect +} = Effect.fnUntraced(function* ( + f: () => Effect.Effect, + deps: React.DependencyList, +) { + const runtime = yield* Effect.runtime() + // biome-ignore lint/correctness/useExhaustiveDependencies: "f" is non-reactive + return yield* React.useMemo(() => Runtime.runSync(runtime)(Effect.cached(f())), deps) +})