13 lines
429 B
TypeScript
13 lines
429 B
TypeScript
import { Effect, Ref, SubscriptionRef } from "effect"
|
|
import { useEffect } from "./useEffect.js"
|
|
import { useOnce } from "./useOnce.js"
|
|
|
|
|
|
export const useRefFromReactiveValue: {
|
|
<A>(value: A): Effect.Effect<SubscriptionRef.SubscriptionRef<A>>
|
|
} = Effect.fnUntraced(function*(value) {
|
|
const ref = yield* useOnce(() => SubscriptionRef.make(value))
|
|
yield* useEffect(() => Ref.set(ref, value), [value])
|
|
return ref
|
|
})
|