LogoLogo
HomeDocsGitHubDiscord
next
next
  • Introduction
  • Getting started
    • Installation
    • Upgrading
    • Usage
    • DevTools
  • API
    • Interfaces
    • Configuration options
    • State properties
    • Helper components
  • Guide
    • Async components
    • Separating view and logic
    • Async actions
    • Optimistic updates
    • Server-side rendering
  • Contributing
    • Introduction
    • Setting up
    • Development
    • Testing
    • Releasing
Powered by GitBook
On this page
  • <IfInitial> / <Async.Initial>
  • Props
  • Examples
  • <IfPending> / <Async.Pending>
  • Props
  • Examples
  • <IfFulfilled> / <Async.Fulfilled>
  • Props
  • Examples
  • <IfRejected> / <Async.Rejected>
  • Props

Was this helpful?

  1. API

Helper components

React Async provides several helper components that make your JSX more declarative and less cluttered. They don't have to be direct children of <Async> and you can use the same component several times.

<IfInitial> / <Async.Initial>

Renders only while the deferred promise is still waiting to be run, or you have not provided any promise.

Props

  • children function(state: Object): Node | Node Render function or React Node.

  • state object Async state object (return value of useAsync()).

  • persist boolean Show until we have data, even while loading or when an error occurred. By default it hides as soon

    as the promise starts loading.

Examples

const state = useAsync(...)
return (
  <IfInitial state={state}>
    <p>This text is only rendered while `run` has not yet been invoked on `deferFn`.</p>
  </IfInitial>
)
<Async deferFn={deferFn}>
  <Async.Initial>
    <p>This text is only rendered while `run` has not yet been invoked on `deferFn`.</p>
  </Async.Initial>
</Async>
<Async.Initial persist>
  {({ error, isPending, run }) => (
    <div>
      <p>This text is only rendered while the promise has not fulfilled yet.</p>
      <button onClick={run} disabled={!isPending}>
        Run
      </button>
      {error && <p>{error.message}</p>}
    </div>
  )}
</Async.Initial>

<IfPending> / <Async.Pending>

This component renders only while the promise is pending (loading / unsettled).

Alias: <Async.Loading>

Props

  • children function(state: Object): Node | Node Render function or React Node.

  • state object Async state object (return value of useAsync()).

  • initial boolean Show only on initial load (when data is undefined).

Examples

const state = useAsync(...)
return (
  <IfPending state={state}>
    <p>This text is only rendered while performing the initial load.</p>
  </IfPending>
)
<Async.Pending initial>
  <p>This text is only rendered while performing the initial load.</p>
</Async.Pending>
<Async.Pending>{({ startedAt }) => `Loading since ${startedAt.toISOString()}`}</Async.Pending>

<IfFulfilled> / <Async.Fulfilled>

This component renders only when the promise is fulfilled (resolved to a value, could be undefined).

Alias: <Async.Resolved>

Props

  • children function(data: any, state: Object): Node | Node Render function or React Node.

  • state object Async state object (return value of useAsync()).

  • persist boolean Show old data while loading new data. By default it hides as soon as a new promise starts.

Examples

const state = useAsync(...)
return (
  <IfFulfilled state={state}>
    {data => <pre>{JSON.stringify(data)}</pre>}
  </IfFulfilled>
)
<Async.Fulfilled persist>{data => <pre>{JSON.stringify(data)}</pre>}</Async.Fulfilled>
<Async.Fulfilled>
  {(data, { finishedAt }) => `Last updated ${finishedAt.toISOString()}`}
</Async.Fulfilled>

<IfRejected> / <Async.Rejected>

This component renders only when the promise is rejected.

Props

  • children function(error: Error, state: Object): Node | Node Render function or React Node.

  • state object Async state object (return value of useAsync()).

  • persist boolean Show old error while loading new data. By default it hides as soon as a new promise starts.

PreviousState propertiesNextAsync components

Last updated 5 years ago

Was this helpful?