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)))