️⚠️ Please note this package relies on experimental React features that are not yet available in a stable release. By definition, this means this package is also experimental. See the React documentation on current mode for more details.
A simple React image component that suspends while loading.
Install the package.
yarn add react-suspense-img
Import the Img
component and image resource
cache.
import { Img, resource } from 'react-suspense-img';
Use the Img
component as you would a standard img
element. However, ensure to wrap it (at the desired place in the tree) with a ErrorBoundary
and React.Suspense
. The Img
component will suspend (while loading) or throw an error (if an error occurred loading the image).
// Start fetching early, following the render-as-you-fetch pattern.
resource.preloadImage('https://placekitten.com/12/34');
const Component = () => (
<ErrorBoundary>
<React.Suspense fallback="Loading...">
<Img src="https://placekitten.com/12/34" width={64} alt="Kitten" />
</React.Suspense>
</ErrorBoundary>
);
Want to see examples of what this could look like? See some of the examples here.
<Img />
A small component that wraps img
but suspends while the image is loading.
src
: the only required prop, the image source to display....
: all of the standard image props, for example alt
, className
, etc.resource
The image resource to cache images and determine if a given image has loaded or if it needs to suspend.
preloadImage(src: string)
: preload the given source image. This is the onlysrc
with the Img
component to follow theread(src: string)
: read a given source from the cache. If it has not loadedImg
clear()
: clear the entire image resource cache. This may be useful forrelay-experimental
.suspense-experimental-github-demo
.