react-overwatch

0.1.7 • Public • Published

React-overwatch 🌀

React component using the browser's Intersection Observer API to watch for when an element is within (or intersecting with) the viewport.

Installation

yarn add react-overwatch

Usage

import React, { Component } from 'react'
import Observable from 'react-overwatch'

const options = {
  // IntersectionObserver options
  root: null,
  rootMargin: '0px',
  threshold: 0.5,
}

class SomeComponent extends Component {
  onEnter = () => {
    console.log('Element in viewport 🎉🎉')
  }

  onLeave = () => {
    console.log('Element out of viewport 😓😓')
  }

  onIntersection = () => {
    console.log('Some action on element intersection ⚛️⚛️')
  }

  render() {
    return (
      <Observable
        options={options}
        onIntersection={this.onIntersection}
        onEnter={this.onEnter}
        onLeave={this.onLeave}
      >
        <div>I am a observable item 👀</div>
      </Observable>
    )
  }
}

Adding the polyfill to your site

Note: For complete browser support you must also provide an Intersection Observer polyfill.

The examples below show various ways to add the IntersectionObserver polyfill to your site.

yarn add intersection-observer

Using <script> tags in the HTML:

<!-- Load the polyfill first. -->
<script src="path/to/intersection-observer.js"></script>

<!-- Load all other JavaScript. -->
<script src="app.js"></script>

Using a module loader (e.g. Browserify or Webpack):

import 'intersection-observer'

Using only for required browsers:

if (typeof window !== 'undefined' && typeof window.IntersectionObserver === `undefined`) {
  import(`intersection-observer`)
}

Browser Support

Intersection Observer is pretty well supported by major browsers, with the exception of Safari/iOS Safari. There's also not been much movement by the Safari team to add support. This is unfortunate but adding a good polyfill will work great for adding support to Safari or IE11. You can track Safari's lack of progress here.

Examples

Basic example

Infinite scroll example

Dependents (0)

Package Sidebar

Install

npm i react-overwatch

Weekly Downloads

8

Version

0.1.7

License

MIT

Unpacked Size

306 kB

Total Files

5

Last publish

Collaborators

  • apn2qq