Skip to main content

loader

Renders a loader mask on top of elements with a truthy x-loader prop.

It provides a loaderMask config. But it doesn't only render the loaderMask in place of the component: the layout wouldn't match. In order to make the loaderMask cover up the exact same area as the component, it adds additional wrappings around the base component to provide a container for the loaderMask with the proper size. As there's no safe way in CSS to wrap a DOM element without affecting the layout and keep the wrapper a positioned context, deepLoaderProp's wrapper component tries to acquire the style.display property of the base component's root DOM node in a useLayoutEffect hook, and uses that display value for the wrapper elements. In most cases it works well.

Installation

npm install react-beyond @react-beyond/loader

Options

  • id - The id of the feature HOC. Defaults to "loader".
  • loaderMask - The loader mask to render. Defaults to a component which takes up the container's area (see above) and shows "Loading..." in the center.

(Check out the Usage Patterns to see alternative syntaxes.)

Examples

import { Beyond } from "react-beyond"
import { deepClsxProp } from "@react-beyond/loader"

const el = (
  <Beyond hocs={[loader()]}>
    <App />
  </Beyond>
)

loaderprop