Skip to content

jonamat/react-wait-content

Repository files navigation

react-wait-content

version size download

React component to postpone children rendering to a determined load state of the page (DOM loaded or fully loaded) with optional additional delay.
It can show a fallback component while waiting and fire a callback at children rendering.

Installation

npm i react-wait-content

Compatibility

Compatible with React >=16.8.0
Compatible with Node >=8.0.0

Features

  • Useful for SEO purposes (it delays images or entire off-screen components and sections) and to reduce the First Contentful Paint
  • Extremely small: uses react hooks and will occupying less than 2kb in your final bundle
  • Safe unmounting: clears timers and listeners at unmounting

Other features

  • Runtime type checking with prop-types and static with typescript declaration files
  • Exhaustive doc comments
  • Tree shakable: exported with ESM modules
  • Tested with available coverage report

API

Index

Defer
TriggerEvent


Defer

import { Defer } from 'react-wait-content'

Type: FunctionComponent

Prop Type Default Description
trigger? TriggerEvent bypass State of the page that triggers the children rendering
fallback? ReactNode undefined Component to render instead of children while waiting
timeout? number 0 Additional delay
onRender? Function undefined Function to call on rendering

TriggerEvent

import { TriggerEvent } from 'react-wait-content'

Type: 'bypass', 'domLoaded', 'pageLoaded'

Value Description
'bypass' Renders children immediately
'domLoaded' Renders children when "DOMContentLoaded" event is fired
'pageLoaded' Renders children when "load" event is fired

Usage examples

import { Defer } from 'react-wait-content'

const App = () => {

    const handleOnRender = () => window.alert('onRender called')

    return (
        <div>

            <h1>This will appear first</h1>

            <Defer
            trigger='pageLoaded'
            fallback={<CircularProgress />} // <-- this will be rendered while page is loading
            timeout={1000}
            onRender={handleOnRender}>

                <h1>This will appear at page loaded + 1 second</h1>

            </Defer>
        </div>;
    )
}

Dependencies

react-delay-fallback 1.0.1

Peer dependencies

  • React: ^16.8.0
  • ReactDOM: ^15.6.2

License

MIT

About

React component to postpone children rendering to a determined load state of the page

Resources

License

Stars

Watchers

Forks

Releases

No releases published