@@ -46,11 +46,6 @@ export namespace Provider {
|
|||||||
export const Provider = <R, ER>(
|
export const Provider = <R, ER>(
|
||||||
{ runtime, children, ...suspenseProps }: Provider.Props<R, ER>
|
{ runtime, children, ...suspenseProps }: Provider.Props<R, ER>
|
||||||
): React.ReactNode => {
|
): React.ReactNode => {
|
||||||
Effect.runSync(Component.useOnChange(
|
|
||||||
() => Effect.addFinalizer(() => runtime.runtime.disposeEffect),
|
|
||||||
[runtime],
|
|
||||||
))
|
|
||||||
|
|
||||||
const promise = React.useMemo(() => runtime.runtime.context(), [runtime])
|
const promise = React.useMemo(() => runtime.runtime.context(), [runtime])
|
||||||
|
|
||||||
return React.createElement(
|
return React.createElement(
|
||||||
@@ -66,4 +61,12 @@ const ProviderInner = <R, ER>(
|
|||||||
readonly promise: Promise<Context.Context<R>>
|
readonly promise: Promise<Context.Context<R>>
|
||||||
readonly children?: React.ReactNode
|
readonly children?: React.ReactNode
|
||||||
}
|
}
|
||||||
): React.ReactNode => React.createElement(runtime.context, { value: React.use(promise) }, children)
|
): React.ReactNode => {
|
||||||
|
const context = React.use(promise)
|
||||||
|
Effect.runSyncWith(context)(Component.useOnChange(
|
||||||
|
() => Effect.addFinalizer(() => runtime.runtime.disposeEffect),
|
||||||
|
[runtime],
|
||||||
|
))
|
||||||
|
|
||||||
|
return React.createElement(runtime.context, { value: context }, children)
|
||||||
|
}
|
||||||
|
|||||||
Reference in New Issue
Block a user