Skip to content

Repository files navigation

React Is Visible

build statusdependencies Status

A small library that lets you know whether a component is visible on screen or not.

Uses the IntersectionObserver API.

Live Examples

Storybook:https://lessp.github.io/react-is-visible/

Code Sandbox:https://2c2qy.csb.app/

Edit festive-mendel-2c2qy

Table of Contents

  1. Polyfill
  2. Installation
  3. Usage
  4. License

In order to polyfill, install the polyfill from W3C

$ npm install intersection-observer --save

... and import it before importing 'react-is-visible'

eg.

// App.jsimportReactfrom'react'importReactDOMfrom'react-dom'import'intersection-observer'import{withIsVisible}from'react-is-visible'// ...
$ npm install react-is-visible --save

or

$ yarn add react-is-visible

React Is Visible

importReact,{useRef}from'react'import{useIsVisible}from'react-is-visible'constSomeComponent=()=>{constnodeRef=useRef()constisVisible=useIsVisible(nodeRef)/* const isVisible = useIsVisible(nodeRef, { once: true }) */return<h1ref={nodeRef}>{isVisible&&`I'm visible!`}</h1>}
importReactfrom'react'import{withIsVisible}from'react-is-visible'constSomeComponent=({ isVisible })=><h1>{isVisible&&`I'm visible!`}</h1>exportdefaultwithIsVisible(SomeComponent)/* export default withIsVisible(SomeComponent, { once: true }) */

or as a decorator

importReactfrom'react'import{withIsVisible}from'react-is-visible'
@withIsVisibleclassSomeClassextendsReact.Component{render(){const{ isVisible }=this.propsreturn<h1>{isVisible&&`I'm visible!`}</h1>}}

The once-prop is optional, but if passed, the isVisible-flag will only trigger once.

importReactfrom'react'importIsVisiblefrom'react-is-visible'constApp=()=>(<IsVisibleonce>{(isVisible)=><h1>{isVisible ? `I'm visible!` : `I'm not visible!`}</h1>}</IsVisible>)

MIT

About

A small library for React to know if an element is on screen or not

Topics

Resources

Stars

28 stars

Watchers

1 watching

Forks

Releases

Packages

Used by

Contributors

Languages