Files
effect-view/packages/effect-fc/src/Hooks/useMemo.ts
T
Julien Valverdé a5df6d04c0
Lint / lint (push) Failing after 12s
Linter fixes
2025-10-01 18:58:25 +02:00

18 lines
583 B
TypeScript

import { Effect, Runtime } from "effect"
import * as React from "react"
export const useMemo: {
<A, E, R>(
factory: () => Effect.Effect<A, E, R>,
deps: React.DependencyList,
): Effect.Effect<A, E, R>
} = Effect.fnUntraced(function* <A, E, R>(
factory: () => Effect.Effect<A, E, R>,
deps: React.DependencyList,
) {
const runtime = yield* Effect.runtime()
// biome-ignore lint/correctness/useExhaustiveDependencies: use of React.DependencyList
return yield* React.useMemo(() => Runtime.runSync(runtime)(Effect.cached(factory())), deps)
})