Working async rendering
Lint / lint (push) Successful in 11s

This commit is contained in:
Julien Valverdé
2025-07-08 04:22:56 +02:00
parent 09267cd50b
commit bd26d46db2
3 changed files with 61 additions and 6 deletions
+12 -3
View File
@@ -99,9 +99,18 @@ export const useSuspenseFC: {
const scope = Runtime.runSync(runtimeRef.current)(Hook.useScope([], self.options))
const FC = React.useMemo(() => {
const f = (props: P) => Runtime.runSync(runtimeRef.current)(
Effect.provideService(self(props), Scope.Scope, scope)
)
const inner = (props: { readonly promise: Promise<React.ReactNode> }) => React.use(props.promise)
const f = React.memo((props: P) => {
const promise = Runtime.runPromise(runtimeRef.current)(
Effect.provideService(self(props), Scope.Scope, scope)
)
return React.createElement(
React.Suspense,
{ fallback: "Loading..." },
React.createElement(inner, { promise }),
)
})
f.displayName = self.displayName ?? "Anonymous"
return f
}, [scope])