From 91b95ea6afc7b4a738128a8b7bd30970d586b555 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Thu, 27 Feb 2025 18:32:57 +0100 Subject: [PATCH] useRefState refactpro --- packages/extension-lazyref/src/index.ts | 10 ++++------ packages/extension-query/src/index.ts | 2 +- packages/reffuse/src/ReffuseHelpers.ts | 10 ++++------ 3 files changed, 9 insertions(+), 13 deletions(-) diff --git a/packages/extension-lazyref/src/index.ts b/packages/extension-lazyref/src/index.ts index e5fbb02..18e6aef 100644 --- a/packages/extension-lazyref/src/index.ts +++ b/packages/extension-lazyref/src/index.ts @@ -9,19 +9,17 @@ export const LazyRefExtension = ReffuseExtension.make(() => ({ this: ReffuseHelpers.ReffuseHelpers, ref: LazyRef.LazyRef, ): [A, React.Dispatch>] { - const runSync = this.useRunSync() - - const initialState = React.useMemo(() => runSync(ref), []) + const initialState = this.useMemo(() => ref, [], { doNotReExecuteOnRuntimeOrContextChange: true }) const [reactStateValue, setReactStateValue] = React.useState(initialState) this.useFork(() => Stream.runForEach(ref.changes, v => Effect.sync(() => setReactStateValue(v) )), [ref]) - const setValue = React.useCallback((setStateAction: React.SetStateAction) => - runSync(LazyRef.update(ref, prevState => + const setValue = this.useCallbackSync((setStateAction: React.SetStateAction) => + LazyRef.update(ref, prevState => SetStateAction.value(setStateAction, prevState) - )), + ), [ref]) return [reactStateValue, setValue] diff --git a/packages/extension-query/src/index.ts b/packages/extension-query/src/index.ts index 2694a64..58b8249 100644 --- a/packages/extension-query/src/index.ts +++ b/packages/extension-query/src/index.ts @@ -6,7 +6,7 @@ import { ReffuseExtension, type ReffuseHelpers } from "reffuse" export interface UseQueryProps { - effect(): Effect.Effect + effect: () => Effect.Effect readonly deps?: React.DependencyList } diff --git a/packages/reffuse/src/ReffuseHelpers.ts b/packages/reffuse/src/ReffuseHelpers.ts index 6b8e5df..77b3b6c 100644 --- a/packages/reffuse/src/ReffuseHelpers.ts +++ b/packages/reffuse/src/ReffuseHelpers.ts @@ -388,19 +388,17 @@ export abstract class ReffuseHelpers { this: ReffuseHelpers, ref: SubscriptionRef.SubscriptionRef, ): [A, React.Dispatch>] { - const runSync = this.useRunSync() - - const initialState = React.useMemo(() => runSync(ref), []) + const initialState = this.useMemo(() => ref, [], { doNotReExecuteOnRuntimeOrContextChange: true }) const [reactStateValue, setReactStateValue] = React.useState(initialState) this.useFork(() => Stream.runForEach(ref.changes, v => Effect.sync(() => setReactStateValue(v) )), [ref]) - const setValue = React.useCallback((setStateAction: React.SetStateAction) => - runSync(Ref.update(ref, prevState => + const setValue = this.useCallbackSync((setStateAction: React.SetStateAction) => + Ref.update(ref, prevState => SetStateAction.value(setStateAction, prevState) - )), + ), [ref]) return [reactStateValue, setValue]