0.1.11 #14
@@ -10,7 +10,7 @@ export const Route = createFileRoute("/lazyref")({
|
|||||||
})
|
})
|
||||||
|
|
||||||
function RouteComponent() {
|
function RouteComponent() {
|
||||||
const promise = R.usePromise(() => LazyRef.of(0))
|
const promise = R.usePromise(() => LazyRef.of(0), [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={<Text>Loading...</Text>}>
|
<Suspense fallback={<Text>Loading...</Text>}>
|
||||||
|
|||||||
@@ -20,7 +20,7 @@ function RouteComponent() {
|
|||||||
HttpClient.withTracerPropagation(false),
|
HttpClient.withTracerPropagation(false),
|
||||||
Effect.flatMap(res => res.json),
|
Effect.flatMap(res => res.json),
|
||||||
Effect.flatMap(Schema.decodeUnknown(Result)),
|
Effect.flatMap(Schema.decodeUnknown(Result)),
|
||||||
))
|
), [])
|
||||||
|
|
||||||
return (
|
return (
|
||||||
<Suspense fallback={<Text>Loading...</Text>}>
|
<Suspense fallback={<Text>Loading...</Text>}>
|
||||||
|
|||||||
@@ -18,11 +18,11 @@ function RouteComponent() {
|
|||||||
R.useFork(() => Effect.addFinalizer(() => Console.log("cleanup")).pipe(
|
R.useFork(() => Effect.addFinalizer(() => Console.log("cleanup")).pipe(
|
||||||
Effect.andThen(Console.log("ouient")),
|
Effect.andThen(Console.log("ouient")),
|
||||||
Effect.delay("1 second"),
|
Effect.delay("1 second"),
|
||||||
))
|
), [])
|
||||||
|
|
||||||
const logValue = R.useCallbackSync(Effect.fn(function*(value: string) {
|
const logValue = R.useCallbackSync(Effect.fn(function*(value: string) {
|
||||||
yield* Effect.log(value)
|
yield* Effect.log(value)
|
||||||
}))
|
}), [])
|
||||||
|
|
||||||
|
|
||||||
return (
|
return (
|
||||||
|
|||||||
@@ -15,7 +15,7 @@ export const Route = createFileRoute("/time")({
|
|||||||
|
|
||||||
function Time() {
|
function Time() {
|
||||||
|
|
||||||
const timeRef = R.useMemo(() => DateTime.now.pipe(Effect.flatMap(SubscriptionRef.make)))
|
const timeRef = R.useMemo(() => DateTime.now.pipe(Effect.flatMap(SubscriptionRef.make)), [])
|
||||||
|
|
||||||
R.useFork(() => Effect.addFinalizer(() => Console.log("Cleanup")).pipe(
|
R.useFork(() => Effect.addFinalizer(() => Console.log("Cleanup")).pipe(
|
||||||
Effect.andThen(Stream.runForEach(timeEverySecond, v => Ref.set(timeRef, v)))
|
Effect.andThen(Stream.runForEach(timeEverySecond, v => Ref.set(timeRef, v)))
|
||||||
|
|||||||
@@ -18,7 +18,7 @@ export function VNewTodo() {
|
|||||||
|
|
||||||
const runSync = R.useRunSync()
|
const runSync = R.useRunSync()
|
||||||
|
|
||||||
const todoRef = R.useMemo(() => createEmptyTodo.pipe(Effect.flatMap(SubscriptionRef.make)))
|
const todoRef = R.useMemo(() => createEmptyTodo.pipe(Effect.flatMap(SubscriptionRef.make)), [])
|
||||||
const [todo, setTodo] = R.useRefState(todoRef)
|
const [todo, setTodo] = R.useRefState(todoRef)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -13,9 +13,9 @@ export function VTodos() {
|
|||||||
Effect.flatMap(state =>
|
Effect.flatMap(state =>
|
||||||
Stream.runForEach(state.todos.changes, () => state.saveToLocalStorage)
|
Stream.runForEach(state.todos.changes, () => state.saveToLocalStorage)
|
||||||
)
|
)
|
||||||
))
|
), [])
|
||||||
|
|
||||||
const todosRef = R.useMemo(() => TodosState.TodosState.pipe(Effect.map(state => state.todos)))
|
const todosRef = R.useMemo(() => TodosState.TodosState.pipe(Effect.map(state => state.todos)), [])
|
||||||
const [todos] = R.useRefState(todosRef)
|
const [todos] = R.useRefState(todosRef)
|
||||||
|
|
||||||
|
|
||||||
|
|||||||
@@ -85,21 +85,21 @@ export abstract class ReffuseHelpers<R> {
|
|||||||
useMemo<A, E, R>(
|
useMemo<A, E, R>(
|
||||||
this: ReffuseHelpers<R>,
|
this: ReffuseHelpers<R>,
|
||||||
effect: () => Effect.Effect<A, E, R>,
|
effect: () => Effect.Effect<A, E, R>,
|
||||||
deps?: React.DependencyList,
|
deps: React.DependencyList,
|
||||||
options?: RenderOptions,
|
options?: RenderOptions,
|
||||||
): A {
|
): A {
|
||||||
const runSync = this.useRunSync()
|
const runSync = this.useRunSync()
|
||||||
|
|
||||||
return React.useMemo(() => runSync(effect()), [
|
return React.useMemo(() => runSync(effect()), [
|
||||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||||
...(deps ?? []),
|
...deps,
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
useMemoScoped<A, E, R>(
|
useMemoScoped<A, E, R>(
|
||||||
this: ReffuseHelpers<R>,
|
this: ReffuseHelpers<R>,
|
||||||
effect: () => Effect.Effect<A, E, R | Scope.Scope>,
|
effect: () => Effect.Effect<A, E, R | Scope.Scope>,
|
||||||
deps?: React.DependencyList,
|
deps: React.DependencyList,
|
||||||
options?: RenderOptions & ScopeOptions,
|
options?: RenderOptions & ScopeOptions,
|
||||||
): A {
|
): A {
|
||||||
const runSync = this.useRunSync()
|
const runSync = this.useRunSync()
|
||||||
@@ -140,7 +140,7 @@ export abstract class ReffuseHelpers<R> {
|
|||||||
return () => { runSync(Scope.close(scope, Exit.void)) }
|
return () => { runSync(Scope.close(scope, Exit.void)) }
|
||||||
}, [
|
}, [
|
||||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||||
...(deps ?? []),
|
...deps,
|
||||||
])
|
])
|
||||||
|
|
||||||
return value
|
return value
|
||||||
@@ -187,9 +187,9 @@ export abstract class ReffuseHelpers<R> {
|
|||||||
)
|
)
|
||||||
|
|
||||||
return () => { runSync(Scope.close(scope, Exit.void)) }
|
return () => { runSync(Scope.close(scope, Exit.void)) }
|
||||||
}, [
|
}, deps && [
|
||||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||||
...(deps ?? []),
|
...deps,
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -235,9 +235,9 @@ export abstract class ReffuseHelpers<R> {
|
|||||||
)
|
)
|
||||||
|
|
||||||
return () => { runSync(Scope.close(scope, Exit.void)) }
|
return () => { runSync(Scope.close(scope, Exit.void)) }
|
||||||
}, [
|
}, deps && [
|
||||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||||
...(deps ?? []),
|
...deps,
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -285,9 +285,9 @@ export abstract class ReffuseHelpers<R> {
|
|||||||
runFork(Effect.provideService(effect(), Scope.Scope, scope), { ...options, scope })
|
runFork(Effect.provideService(effect(), Scope.Scope, scope), { ...options, scope })
|
||||||
|
|
||||||
return () => { runFork(Scope.close(scope, Exit.void)) }
|
return () => { runFork(Scope.close(scope, Exit.void)) }
|
||||||
}, [
|
}, deps && [
|
||||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync, runFork],
|
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||||
...(deps ?? []),
|
...deps,
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
@@ -330,9 +330,9 @@ export abstract class ReffuseHelpers<R> {
|
|||||||
|
|
||||||
cleanup()
|
cleanup()
|
||||||
}
|
}
|
||||||
}, [
|
}, deps && [
|
||||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync, runFork],
|
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||||
...(deps ?? []),
|
...deps,
|
||||||
])
|
])
|
||||||
|
|
||||||
return value
|
return value
|
||||||
@@ -341,28 +341,28 @@ export abstract class ReffuseHelpers<R> {
|
|||||||
useCallbackSync<Args extends unknown[], A, E, R>(
|
useCallbackSync<Args extends unknown[], A, E, R>(
|
||||||
this: ReffuseHelpers<R>,
|
this: ReffuseHelpers<R>,
|
||||||
callback: (...args: Args) => Effect.Effect<A, E, R>,
|
callback: (...args: Args) => Effect.Effect<A, E, R>,
|
||||||
deps?: React.DependencyList,
|
deps: React.DependencyList,
|
||||||
options?: RenderOptions,
|
options?: RenderOptions,
|
||||||
): (...args: Args) => A {
|
): (...args: Args) => A {
|
||||||
const runSync = this.useRunSync()
|
const runSync = this.useRunSync()
|
||||||
|
|
||||||
return React.useCallback((...args) => runSync(callback(...args)), [
|
return React.useCallback((...args) => runSync(callback(...args)), [
|
||||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runSync],
|
||||||
...(deps ?? []),
|
...deps,
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
useCallbackPromise<Args extends unknown[], A, E, R>(
|
useCallbackPromise<Args extends unknown[], A, E, R>(
|
||||||
this: ReffuseHelpers<R>,
|
this: ReffuseHelpers<R>,
|
||||||
callback: (...args: Args) => Effect.Effect<A, E, R>,
|
callback: (...args: Args) => Effect.Effect<A, E, R>,
|
||||||
deps?: React.DependencyList,
|
deps: React.DependencyList,
|
||||||
options?: { readonly signal?: AbortSignal } & RenderOptions,
|
options?: { readonly signal?: AbortSignal } & RenderOptions,
|
||||||
): (...args: Args) => Promise<A> {
|
): (...args: Args) => Promise<A> {
|
||||||
const runPromise = this.useRunPromise()
|
const runPromise = this.useRunPromise()
|
||||||
|
|
||||||
return React.useCallback((...args) => runPromise(callback(...args), options), [
|
return React.useCallback((...args) => runPromise(callback(...args), options), [
|
||||||
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runPromise],
|
...options?.doNotReExecuteOnRuntimeOrContextChange ? [] : [runPromise],
|
||||||
...(deps ?? []),
|
...deps,
|
||||||
])
|
])
|
||||||
}
|
}
|
||||||
|
|
||||||
|
|||||||
Reference in New Issue
Block a user