@@ -80,36 +80,36 @@ export class Reffuse<R> {
|
||||
* Changes to the Reffuse runtime or context will recompute the value in addition to the deps.
|
||||
* You can disable this behavior by setting `doNotReExecuteOnRuntimeOrContextChange` to `true` in `options`.
|
||||
*/
|
||||
useMemo<A, E>(
|
||||
effect: Effect.Effect<A, E, R | Scope.Scope>,
|
||||
deps?: React.DependencyList,
|
||||
options?: RenderOptions & ScopeOptions,
|
||||
): A {
|
||||
const runSync = this.useRunSync()
|
||||
// useMemo<A, E>(
|
||||
// effect: Effect.Effect<A, E, R | Scope.Scope>,
|
||||
// deps?: React.DependencyList,
|
||||
// options?: RenderOptions & ScopeOptions,
|
||||
// ): A {
|
||||
// const runSync = this.useRunSync()
|
||||
|
||||
const [value, scope] = React.useMemo(() => Scope.make(options?.finalizerExecutionStrategy).pipe(
|
||||
Effect.flatMap(scope =>
|
||||
Effect.provideService(effect, Scope.Scope, scope).pipe(
|
||||
Effect.map(value => [value, scope] as const)
|
||||
)
|
||||
),
|
||||
// const [value, scope] = React.useMemo(() => Scope.make(options?.finalizerExecutionStrategy).pipe(
|
||||
// Effect.flatMap(scope =>
|
||||
// Effect.provideService(effect, Scope.Scope, scope).pipe(
|
||||
// Effect.map(value => [value, scope] as const)
|
||||
// )
|
||||
// ),
|
||||
|
||||
runSync,
|
||||
), [
|
||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||
...(deps ?? []),
|
||||
])
|
||||
// runSync,
|
||||
// ), [
|
||||
// ...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||
// ...(deps ?? []),
|
||||
// ])
|
||||
|
||||
React.useEffect(() => {
|
||||
// console.log("effect", value, scope)
|
||||
return () => {
|
||||
// console.log("cleanup", value, scope)
|
||||
runSync(Scope.close(scope, Exit.void))
|
||||
}
|
||||
}, [scope])
|
||||
// React.useEffect(() => {
|
||||
// // console.log("effect", value, scope)
|
||||
// return () => {
|
||||
// // console.log("cleanup", value, scope)
|
||||
// runSync(Scope.close(scope, Exit.void))
|
||||
// }
|
||||
// }, [scope])
|
||||
|
||||
return value
|
||||
}
|
||||
// return value
|
||||
// }
|
||||
|
||||
/**
|
||||
* Reffuse equivalent to `React.useMemo`.
|
||||
@@ -120,18 +120,18 @@ export class Reffuse<R> {
|
||||
* Changes to the Reffuse runtime or context will recompute the value in addition to the deps.
|
||||
* You can disable this behavior by setting `doNotReExecuteOnRuntimeOrContextChange` to `true` in `options`.
|
||||
*/
|
||||
// useMemo<A, E>(
|
||||
// effect: Effect.Effect<A, E, R>,
|
||||
// deps?: React.DependencyList,
|
||||
// options?: RenderOptions,
|
||||
// ): A {
|
||||
// const runSync = this.useRunSync()
|
||||
useMemo<A, E>(
|
||||
effect: Effect.Effect<A, E, R>,
|
||||
deps?: React.DependencyList,
|
||||
options?: RenderOptions,
|
||||
): A {
|
||||
const runSync = this.useRunSync()
|
||||
|
||||
// return React.useMemo(() => runSync(effect), [
|
||||
// ...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||
// ...(deps ?? []),
|
||||
// ])
|
||||
// }
|
||||
return React.useMemo(() => runSync(effect), [
|
||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||
...(deps ?? []),
|
||||
])
|
||||
}
|
||||
|
||||
/**
|
||||
* Reffuse equivalent to `React.useEffect`.
|
||||
|
||||
Reference in New Issue
Block a user