diff --git a/packages/example/src/routes/tests.tsx b/packages/example/src/routes/tests.tsx index acd3c8f..14c9552 100644 --- a/packages/example/src/routes/tests.tsx +++ b/packages/example/src/routes/tests.tsx @@ -24,6 +24,10 @@ function RouteComponent() { const aRef = R.useRef("a value") + const anotherRef = R.useRef(69) + + const res = R.useRefsState({ aRef, anotherRef }) + const [reactValue, setReactValue] = useState("initial") const reactValueStream = R.useStreamFromValues([reactValue]) diff --git a/packages/reffuse/src/ReffuseHelpers.ts b/packages/reffuse/src/ReffuseHelpers.ts index 737661e..7026830 100644 --- a/packages/reffuse/src/ReffuseHelpers.ts +++ b/packages/reffuse/src/ReffuseHelpers.ts @@ -411,35 +411,36 @@ export abstract class ReffuseHelpers { } useRefsState< - Refs extends { [K in keyof Refs]: SubscriptionRef.SubscriptionRef }, + const Refs extends { readonly [K in keyof Refs]: SubscriptionRef.SubscriptionRef }, R, >( this: ReffuseHelpers, refs: Refs, ): { - [K in keyof Refs]: readonly [ - Effect.Effect, - React.Dispatch>>, + readonly [K in keyof Refs]: readonly [ + Effect.Effect.Success, + React.Dispatch>>, ] } { - const initialState = this.useMemo(() => Effect.Do.pipe( - Effect.bindAll(() => refs) - ), [], { doNotReExecuteOnRuntimeOrContextChange: true }) + // const initialState = this.useMemo(() => Effect.Do.pipe( + // Effect.bindAll(() => refs) + // ), [], { doNotReExecuteOnRuntimeOrContextChange: true }) - const [reactStateValue, setReactStateValue] = React.useState(initialState) + // const [reactStateValue, setReactStateValue] = React.useState(initialState) - this.useFork(() => Stream.runForEach( - Stream.changesWith(ref.changes, (x, y) => x === y), - v => Effect.sync(() => setReactStateValue(v)), - ), [ref]) + // this.useFork(() => Stream.runForEach( + // Stream.changesWith(ref.changes, (x, y) => x === y), + // v => Effect.sync(() => setReactStateValue(v)), + // ), [ref]) - const setValue = this.useCallbackSync((setStateAction: React.SetStateAction) => - Ref.update(ref, prevState => - SetStateAction.value(setStateAction, prevState) - ), - [ref]) + // const setValue = this.useCallbackSync((setStateAction: React.SetStateAction) => + // Ref.update(ref, prevState => + // SetStateAction.value(setStateAction, prevState) + // ), + // [ref]) - return [reactStateValue, setValue] + // return [reactStateValue, setValue] + return null! } useStreamFromValues(