All Projects → natelindev → react-use-hoverintent

natelindev / react-use-hoverintent

Licence: MIT license
React hook for hoverIntent

Programming Languages

typescript
32286 projects

Projects that are alternatives of or similar to react-use-hoverintent

React Universal Hooks
🎉 React Universal Hooks : just use****** everywhere (Functional or Class Component). Support React DevTools!
Stars: ✭ 148 (+825%)
Mutual labels:  hooks, hook
React Nprogress
⌛️ A React primitive for building slim progress bars.
Stars: ✭ 173 (+981.25%)
Mutual labels:  hooks, hook
React Intersection Observer
React implementation of the Intersection Observer API to tell you when an element enters or leaves the viewport.
Stars: ✭ 2,689 (+16706.25%)
Mutual labels:  hooks, hook
React Selector Hooks
Collection of hook-based memoized selector factories for declarations outside of render.
Stars: ✭ 84 (+425%)
Mutual labels:  hooks, hook
react-ui-hooks
🧩Simple repository of React hooks for building UI components
Stars: ✭ 20 (+25%)
Mutual labels:  hooks, hook
Swifthook
A library to hook methods in Swift and Objective-C.
Stars: ✭ 93 (+481.25%)
Mutual labels:  hooks, hook
React Use Wizard
🧙 A React wizard (stepper) builder without the hassle, powered by hooks.
Stars: ✭ 162 (+912.5%)
Mutual labels:  hooks, hook
Use Onclickoutside
React hook for listening for clicks outside of an element.
Stars: ✭ 361 (+2156.25%)
Mutual labels:  hooks, hook
rdeco
响应式对象编程库,从时间和空间上解耦你的代码
Stars: ✭ 54 (+237.5%)
Mutual labels:  hook, reacthooks
Fre
👻 Tiny Footprint Concurrent UI library for Fiber.
Stars: ✭ 3,195 (+19868.75%)
Mutual labels:  hooks, hook
Ysf
YSF Server Functions
Stars: ✭ 77 (+381.25%)
Mutual labels:  hooks, hook
use-smooth-scroll
React hook which gives a smooth scrolling function.
Stars: ✭ 41 (+156.25%)
Mutual labels:  hooks, hook
Fontmod
Simple hook tool to change Win32 program font.
Stars: ✭ 1,064 (+6550%)
Mutual labels:  hooks, hook
Hooks
Async middleware for JavaScript and TypeScript
Stars: ✭ 117 (+631.25%)
Mutual labels:  hooks, hook
Webhook
webhook is a lightweight incoming webhook server to run shell commands
Stars: ✭ 7,201 (+44906.25%)
Mutual labels:  hooks, hook
Pinst
🍺 dev only postinstall hooks (package.json)
Stars: ✭ 162 (+912.5%)
Mutual labels:  hooks, hook
Swr
React Hooks for data fetching
Stars: ✭ 20,348 (+127075%)
Mutual labels:  hooks, hook
Radioactive State
☢ Make Your React App Truly Reactive!
Stars: ✭ 273 (+1606.25%)
Mutual labels:  hooks, hook
Useworker
⚛️ useWorker() - A React Hook for Blocking-Free Background Tasks
Stars: ✭ 2,233 (+13856.25%)
Mutual labels:  hooks, hook
crypto-watchdog
Crypto Watchdog is an open-source developer friendly project, periodically queries crypto market and notifies potential pumps & recently added tokens/coins via web-hooks.
Stars: ✭ 22 (+37.5%)
Mutual labels:  hooks, hook

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, required.

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, ref] = useHoverIntent();
  return <div ref={ref} className={`${isHovering ? "hover" : ""}`}></div>;
};

With options

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

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

With ForwardRef

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

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

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] = useHoverIntent();
  return (
    <Card
      innerRef={intentRef}
      className={`${isHovering ? "hover" : ""}`}
    ></Card>
  );
};

License

MIT

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].