0.1.4 • Published 4 years ago

react-observe-component v0.1.4

Weekly downloads
8
License
MIT
Repository
github
Last release
4 years ago

Observe

Observe is a React component which makes use of Intersection Observer API to notify through a declarative interface when the children element has been detected by the observer.

Instalation

Install using yarn

yarn add react-observe-component

or using NPM

npm install react-observe-component

Props

PropsTypeDefaultRequiredDescription
isIntersecting(entry) => void() => {}falseFunction which it will be executed if children element it is intersected
isNotIntersecting(entry) => void() => {}falseFunction which it will be executed if children element it is not longer intersected
asstringdivfalseSays which HTML tag it will be rendered by Observe component
onEndObserving() => void() => {}falseFunction which it will be executed as soon as the Observe component has left to observe children element
triggersOnceBooleanfalsefalseBoolean value which indicates if after first isIntersecting execution Observer must no longer observe children element
unobserve(entry) => boolean() => falsefalseBoolean function that if returns true will make that Observe component left to observe children element
optionsIntersection Observer options{}falseIntersection Observer options object

Options

NameTypeDefaultRequired
rootElementwindowfalse
rootMarginstring'0px'false
thresholdnumber | number[]0false

For more information visit Intersection observer docs

Usage

import React from "react"
import { Observe } from "react-observe-component"

function YourComponent() {
  function isIntersecting(entry) {

  }

  function isNotIntersecting(entry) {

  }

  function onEndObserving() {

  }

  const unobserve = (entry) => entry.intersectionRatio > 0.3

  return (
    <section>
      <article>1</article>
      <article>2</article>
      <article>3</article>
      <Observe
        as="article"
        className="your-classname"
        isIntersecting={isIntersecting}
        isNotIntersecting={isNotIntersecting}
        unobserve={unobserve}
        onEndObserving={onEndObserving}
      >
        4
      </Observe>
      <article>5</article>
    </section>
  )
}

This component receives every valid props which HTML tag defined in as prop can receive, An example of this is className prop in the above example

useObserve hook

You could use useObserve hook to observe your element without create a new html tag, this hook receives as an object the same options than Observe component

Usage

import React from "react"
import { useObserve } from "react-observe-component"

export const YourComponent = () => {
  const [inView, setIsInView] = React.useState(false)

  const { elementRef } = useObserve({
    isIntersecting: () => setIsInView(true),
    isNotIntersecting: () => setIsInView(false),
    options: {
      threshold: 0.5
    }
  })

  return (
    <>
      <Card>
        1
      </Card>
      <Card>
        2
      </Card>
      <Card>
        3
      </Card>
        <Card blue>
          4
        </Card>
        <Card blue>
          5
        </Card>
      <Card ref={elementRef}>
        {inView ? 'Visible' : 'No visible'}
      </Card>
    </>
  )
}
0.1.4

4 years ago

0.0.4

4 years ago

0.0.3

4 years ago

0.0.2

4 years ago

0.0.1

4 years ago