Called immediately before mounting occurs, and before Component#render
.
Avoid introducing any side-effects or subscriptions in this method.
This method will not stop working in React 17.
Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.
Called when the component may be receiving new props. React may call this even if props have not changed, so be sure to compare new and existing props if you only want to handle changes.
Calling Component#setState
generally does not trigger this method.
This method will not stop working in React 17.
Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.
Called immediately before rendering when new props or state is received. Not called for the initial render.
Note: You cannot call Component#setState
here.
This method will not stop working in React 17.
Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.
Catches exceptions generated in descendant components. Unhandled exceptions will cause the entire component tree to unmount.
Called immediately after a component is mounted. Setting state here will trigger re-rendering.
Called immediately after updating occurs. Not called for the initial render.
The snapshot is only present if getSnapshotBeforeUpdate is present and returns non-null.
Called immediately before mounting occurs, and before Component#render
.
Avoid introducing any side-effects or subscriptions in this method.
Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.
Called when the component may be receiving new props. React may call this even if props have not changed, so be sure to compare new and existing props if you only want to handle changes.
Calling Component#setState
generally does not trigger this method.
Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.
Called immediately before a component is destroyed. Perform any necessary cleanup in this method, such as
cancelled network requests, or cleaning up any DOM elements created in componentDidMount
.
Called immediately before rendering when new props or state is received. Not called for the initial render.
Note: You cannot call Component#setState
here.
Note: the presence of getSnapshotBeforeUpdate or getDerivedStateFromProps prevents this from being invoked.
Runs before React applies the result of render
to the document, and
returns an object to be given to componentDidUpdate. Useful for saving
things such as scroll position before render
causes changes to it.
Note: the presence of getSnapshotBeforeUpdate prevents any of the deprecated lifecycle events from running.
Called to determine whether the change in props and state should trigger a re-render.
Component
always returns true.
PureComponent
implements a shallow comparison on props and state and returns true if any
props or states have changed.
If false is returned, Component#render
, componentWillUpdate
and componentDidUpdate
will not be called.
Generated using TypeDoc
Props: AsyncProps
Context Providers: Controller<AsyncState>
A render-prop component that injects an AsyncLifecycle for any AsyncOperation into the component tree. It executes the given
AsyncOperation
on mount, and again whenever the givenparams
change. The AsyncState representing the operation is passed to this component'schildren
as the sole parameter. It should be used whenever a component needs asynchronously-loaded data to render, such as search results or an entity from a REST service.Each instance of
Async
will own a uniqueAsyncLifecycle
. This way, multiple instances using the sameAsyncOperation
will not conflict. The component cleans up after itself by destroying theAsyncLifecycle
on unmount.The following example wraps a
<SearchResults>
component, handling the execution and state management of the asynchronous search call:// type doSearch = (p1: number, p2: string) => Promise<SearchResults> <Async operation={doSearch} params={[123, 'abc']}> {state => <div> { // If the Promise is rejected, render the error. state.error ? <ErrorMessage error={state.error} /> // If the Promise resolves, render the SearchResults. : state.data ? <SearchResults results={state.data} /> // If the operation is active, render a loading indicator. : state.status === 'active' && <LoadingSpinner /> } </div>} </Async>