@@ -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])
|
||||
|
||||
Reference in New Issue
Block a user