From 40eb25d2c328de343ad923def73b2833e3877051 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?Julien=20Valverd=C3=A9?= Date: Mon, 14 Jul 2025 06:52:38 +0200 Subject: [PATCH] Work --- packages/effect-fc/src/Component.ts | 5 +++++ packages/example/src/routes/dev/async-rendering.tsx | 6 ++++-- 2 files changed, 9 insertions(+), 2 deletions(-) diff --git a/packages/effect-fc/src/Component.ts b/packages/effect-fc/src/Component.ts index 808dd19..1f61bf3 100644 --- a/packages/effect-fc/src/Component.ts +++ b/packages/effect-fc/src/Component.ts @@ -110,6 +110,8 @@ export interface Suspense { readonly suspense: true } +export type SuspenseProps = Omit + export const suspense = >( self: ExcludeKeys ): T & Suspense => Object.setPrototypeOf( @@ -119,6 +121,9 @@ export const suspense = >( export const useFC: { + ( + self: Component> & Suspense + ): Effect.Effect, never, Exclude> ( self: Component ): Effect.Effect, never, Exclude> diff --git a/packages/example/src/routes/dev/async-rendering.tsx b/packages/example/src/routes/dev/async-rendering.tsx index 2832679..0b2e479 100644 --- a/packages/example/src/routes/dev/async-rendering.tsx +++ b/packages/example/src/routes/dev/async-rendering.tsx @@ -8,7 +8,7 @@ import * as React from "react" const RouteComponent = Component.make(function* AsyncRendering() { - const VAsyncComponent = yield* Component.useSuspenseFC(AsyncComponent) + const VAsyncComponent = yield* Component.useFC(AsyncComponent) const [input, setInput] = React.useState("") return <> @@ -34,7 +34,9 @@ const AsyncComponent = Component.make(function* AsyncComponent() { Rendered!
-}) +}).pipe( + Component.suspense +) const SubComponent = Component.make(function* SubComponent() { const [state] = React.useState(yield* Hook.useOnce(() => Effect.provide(makeUuid4, GetRandomValues.CryptoRandom)))