React
Use Gesture 是一个支持丰富鼠标和触摸手势的 React 库。当使用鼠标或者触摸手势进行移动、缩放、拖动、滚动、捏合等操作时,Use Gesture可将这些事件绑定到任何组件或视图。通过使用接收到的数据,只需要几行代码就可以轻松搞定复杂多样的手势动作。
如何使用
安装
使用 yarn:
yarn add react-use-gesture
使用 npm:
npm install --save react-use-gesture
举个栗子
下面的例子是使一个 <div/> 可拖动,拖动时它将跟随鼠标或手指移动,并在释放时返回其初始位置。
import React from 'react'import { useDrag } from '@use-gesture/react'import { a, useSpring } from '@react-spring/web'import styles from './styles.module.css'export default function App() {const [style, api] = useSpring(() => ({ x: 0, y: 0, scale: 1 }))const bind = useDrag(({ active, movement: [x, y] }) => {api.start({x: active ? x : 0,y: active ? y : 0,scale: active ? 1.2 : 1})})return (<div className="flex fill center"><a.div tabIndex={-1} {...bind()} className={styles.drag} style={style} /></div>)}
效果如下:
这其实是 useDrag hook 返回一个函数(存储在 bind 常数中),该函数在调用时会返回一个带有事件处理程序的对象。将 {...bind()} 扩展到某个组件中时,实际上是在添加 onMouseDown 和 onTouchStart事件来处理。
可用 Hooks
useDrag 只是 React UseGesture 的其中一个 hook,它可以处理多种不同的手势。
| Hook | Description |
|---|---|
useDrag |
处理拖拽手势 |
useMove |
处理鼠标移动 |
useHover |
处理鼠标进入及离开时间 |
useScroll |
处理滚动事件 |
useWheel |
处理鼠标滚轮事件 |
usePinch |
处理捏合手势 |
useGesture |
处理多个手势 |
这个库更能与 React-spring 这样的动画库结合使用,解锁更多手势就是现在!
