An open API service indexing awesome lists of open source software.

https://github.com/kingrayhan/reactjs-visibility

Detect when an element is becoming visible or hidden on the page.
https://github.com/kingrayhan/reactjs-visibility

Last synced: about 1 year ago
JSON representation

Detect when an element is becoming visible or hidden on the page.

Awesome Lists containing this project

README

          

# React Visibility

Detect when an element is becoming visible or hidden on the page.



[![GitHub Pages deploy](https://github.com/kingRayhan/reactjs-visibility/actions/workflows/gh-pages-publish.yml/badge.svg)](https://github.com/kingRayhan/reactjs-visibility/actions/workflows/gh-pages-publish.yml)
[![Publish to NPM](https://github.com/kingRayhan/reactjs-visibility/actions/workflows/npm-publish.yml/badge.svg)](https://github.com/kingRayhan/reactjs-visibility/actions/workflows/npm-publish.yml)

![npm bundle size](https://img.shields.io/bundlephobia/min/reactjs-visibility)
![npm bundle size](https://img.shields.io/bundlephobia/minzip/reactjs-visibility)
[![npm downloads](https://img.shields.io/npm/dt/@kingrayhan/react-onscreen)](https://www.npmjs.com/package/reactjs-visibility)
[![GitHub license](https://img.shields.io/badge/license-MIT-blue.svg)](https://github.com/kingrayhan/reactjs-visibility/blob/master/LICENSE)

## [See in action](https://kingrayhan.github.io/reactjs-visibility/)

### Installation

```bash
npm install reactjs-visibility
```

> ⚠️ This plugin uses the Intersection Observer API that is not supported in every browser (currently supported in Edge, Firefox and Chrome). You need to include a polyfill to make it work on incompatible browsers.

### Detech visibility with `` component

```jsx
import React from "react";
import { VisibilityObserver } from "reactjs-visibility";

const App = () => {
const handleChangeVisibility = (visible) => {
if (visible) {
alert("I am now visible");
}
};

const options = {
rootMargin: "200px",
};

return (



Lorem ipsum dolor sit, amet consectetur adipisicing elit. Magni nam
exercitationem sit alias perferendis, odit ex optio iure assumenda!
Voluptatum, nulla. Assumenda iusto nesciunt adipisci totam repellat id
excepturi minima.


Loadmore...


);
};
```

### Detech visibility with `useVisibility()` Hook

**Example 1**

```jsx
import React from "react";
import { useVisibility } from "reactjs-visibility";

const App = () => {
const handleChangeVisibility = (visible) => {
if (visible) {
alert("I am now visible");
}
};

const options = {};

const { ref, visible } = useVisibility({
onChangeVisibility: handleChangeVisibility,
options,
});

console.log(visible);

return (



Lorem ipsum dolor sit, amet consectetur adipisicing elit. Magni nam
exercitationem sit alias perferendis, odit ex optio iure assumenda!
Voluptatum, nulla. Assumenda iusto nesciunt adipisci totam repellat id
excepturi minima.

Loadmore...


);
};
```

**Example 2**

```jsx
import React from "react";
import { useVisibility } from "reactjs-visibility";

const App = () => {
const { ref, visible } = useVisibility();

useEffect(() => {
if (visible) {
alert("I am now visible");
}
}, [visible]);

return (



Lorem ipsum dolor sit, amet consectetur adipisicing elit. Magni nam
exercitationem sit alias perferendis, odit ex optio iure assumenda!
Voluptatum, nulla. Assumenda iusto nesciunt adipisci totam repellat id
excepturi minima.

Loadmore...


);
};
```

## Options

It's possible to pass the [IntersectionObserver `options` object](https://developer.mozilla.org/en-US/docs/Web/API/IntersectionObserver/IntersectionObserver#Parameters) using the `intersection`

### License

MIT license, Copyright (c) KingRayhan. For more information see `LICENSE`.