Socket
Socket
Sign inDemoInstall

react-use-hoverintent

Package Overview
Dependencies
0
Maintainers
1
Versions
17
Alerts
File Explorer

Advanced tools

Install Socket

Detect and block malicious and high-risk dependencies

Install

    react-use-hoverintent

React hook for hoverIntent


Version published
Weekly downloads
13K
decreased by-31.65%
Maintainers
1
Install size
18.8 kB
Created
Weekly downloads
 

Readme

Source

React useHoverIntent


Downloads MIT License

react-use-hoverintent is a react hook which allows you to use classic hoverintent behavior in modern, react way.

"hoverIntent is a plug-in that attempts to determine the user's intent... like a crystal ball, only with mouse movement! It is similar to jQuery's hover method. However, instead of calling the handlerIn function immediately, hoverIntent waits until the user's mouse slows down enough before making the call."

Built with typescript, with official typing, with zero dependency, transpiled to es5.

Inspired by jquery-hoverintent react-hoverintent

Installation

yarn add react-use-hoverintent

or

npm install react-use-hoverintent

Options

ref: the react element ref which you want hoverintent to be applied.

timeout : A simple delay, in milliseconds, before the onMouseOut callback is fired. If the user mouses back over the element before the timeout has expired the onMouseOut callback will not be called (nor will the onMouseOver callback be called). This is primarily to protect against sloppy/human mousing trajectories that temporarily (and unintentionally) take the user off of the target element... giving them time to return.

Default timeout: 0

sensitivity : If the mouse travels fewer than this number of pixels between polling intervals, then the onMouseOver callback will be called. With the minimum sensitivity threshold of 1, the mouse must not move between polling intervals. With higher sensitivity thresholds you are more likely to receive a false positive.

Default sensitivity: 6

interval : The number of milliseconds hoverIntent waits between reading/comparing mouse coordinates. When the user's mouse first enters the element its coordinates are recorded. The soonest the onMouseOut callback can be called is after a single polling interval. Setting the polling interval higher will increase the delay before the first possible onMouseOver call, but also increases the time to the next point of comparison.

Default interval: 100

Usage

Basic usage

import React from "react";
import { useHoverIntent } from "react-use-hoverintent";

export const MyFunctionalComponent = (props) => {
  const [isHovering, intentRef, setIsHovering] = useHoverIntent();
  return <div ref={intentRef} className={`${isHovering ? "hover" : ""}`}></div>;
};

With options

import React from "react";
import { useHoverIntent } from "react-use-hoverintent";

export const MyFunctionalComponent = (props) => {
  const [isHovering, intentRef, setIsHovering] = useHoverIntent({
    timeout: 100,
    sensitivity: 10,
    interval: 200,
  });
  return <div ref={intentRef} className={`${isHovering ? "hover" : ""}`} />;
};

With ForwardRef

import React from "react";
import { useHoverIntent } from "react-use-hoverintent";

export const MyFunctionalComponent = React.forwardRef((props, ref) => {
  const [isHovering, intentRef, setIsHovering] = useHoverIntent({ ref });
  return <div ref={intentRef} className={`${isHovering ? "hover" : ""}`} />;
});

With Custom UI lib

Check if they have innerRef prop or forwarded ref

import React from "react";
import { useHoverIntent } from "react-use-hoverintent";

export const MyFunctionalComponent = (props) => {
  const [isHovering, intentRef, setIsHovering] = useHoverIntent();
  return (
    <Card
      innerRef={intentRef}
      className={`${isHovering ? "hover" : ""}`}
    ></Card>
  );
};

After v1.2.9

With custom hover state control

import React, { useCallback } from "react";
import { useHoverIntent } from "react-use-hoverintent";

export const MyFunctionalComponent = (props) => {
  const [isHovering, intentRef, setIsHovering] = useHoverIntent();

  const mouseOverHandler = useCallback(() => {
    () => setIsHovering(true);
  }, [setIsHovering]);

  const mouseOutHandler = useCallback(() => {
    () => setIsHovering(false);
  }, [setIsHovering]);

  return (
    <>
      <div ref={intentRef} className={`${isHovering ? "hover" : ""}`} />
      <textarea onMouseOver={mouseOverHandler} onMouseOut={mouseOutHandler} />
    </>
  );
};

After v1.3.0

use version of your desire

index.js - commonjs

*.cjs - commonjs

*.esm.js - es module

*.min.* minified version

License

MIT

Keywords

FAQs

Last updated on 08 Jun 2023

Did you know?

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc