mirror of
https://github.com/facebook/react.git
synced 2026-02-25 13:13:03 +00:00
This is a partial replacement for the 'Press' responder: 1. `useTap` is scoped to pointers (no keyboard support). Our current thinking is that "responders" should be limited to working with pointers, and that they can be combined with 'useKeyboard' in user-space. For example, we might create a 'usePress' hook in user-space that combines 'useTap' with 'useKeyboard' to react to both pointers and keyboard interactions. 2. `useTap` cancels the gesture once the pointer moves over an element that is not within the responder target's subtree. This differs from `usePress` (and React Native), where the gesture remains active after the pointer exits the target's subtree and is restarted once the pointer reenters. One of the drawbacks with the `usePress` behavior is that it requires repeatedly measuring DOM elements (which can cause jank) to perform hit region tests. `useTap` avoids doing this and relies on `document.elementFromPoint` only to support the TouchEvent fallbacks. 3. `useTap` calls `onTapUpdate` when the active gesture's state changes, `onTapEnd` when the gesture successfully completes. and `onTapCancel` when it fails. There is no `onTap` callback. `usePress` did not explicitly report back when the gesture failed, and product developers were confused about the difference between `onPress` and `onPressEnd`. 4. `useTap` explicitly separates the PointerEvent implementation from the MouseEvent/TouchEvent fallback. 5. `useTap` has better unit test coverage . All pointer types and the fallback environment are tested. The shape of the gesture state object is also defined and tested.
50 lines
927 B
JSON
50 lines
927 B
JSON
{
|
|
"name": "react-events",
|
|
"private": true,
|
|
"description": "React is a JavaScript library for building user interfaces.",
|
|
"keywords": [
|
|
"react"
|
|
],
|
|
"version": "0.1.0",
|
|
"homepage": "https://reactjs.org/",
|
|
"bugs": "https://github.com/facebook/react/issues",
|
|
"license": "MIT",
|
|
"files": [
|
|
"LICENSE",
|
|
"README.md",
|
|
"context-menu.js",
|
|
"drag.js",
|
|
"focus.js",
|
|
"hover.js",
|
|
"input.js",
|
|
"keyboard.js",
|
|
"press.js",
|
|
"scroll.js",
|
|
"swipe.js",
|
|
"tap.js",
|
|
"build-info.json",
|
|
"cjs/",
|
|
"umd/"
|
|
],
|
|
"main": "index.js",
|
|
"repository": {
|
|
"type": "git",
|
|
"url": "https://github.com/facebook/react.git",
|
|
"directory": "packages/react"
|
|
},
|
|
"engines": {
|
|
"node": ">=0.10.0"
|
|
},
|
|
"dependencies": {
|
|
"loose-envify": "^1.1.0"
|
|
},
|
|
"peerDependencies": {
|
|
"react": "^16.0.0"
|
|
},
|
|
"browserify": {
|
|
"transform": [
|
|
"loose-envify"
|
|
]
|
|
}
|
|
}
|