Skip to main content

Suspense

function MyView(this: Proton.Component) {
this.view.set(<Loader />)

throw new Promise(resolve => setTimeout(resolve, 1_000))

return <div>I'm loaded!</div>
}

Make sure a parent catches it by using suspense and unsuspense. This is an experimental API, so don't rely on it too much.

function Parent(this: Proton.Component) {
this.suspense(() => this.view.set(<Loader />))
this.unsuspense(() => this.view.set(this.view.default))

return <div><MyView /></div>
}