来自 react-native 和 react-native-gesture-handler 的 Touchables 之间的区别

bay*_*max 4 javascript react-native

两者react-nativereact-native-gesture-handler提供Touchables( TouchableOpacityTouchableHighlight等)。

两个包中的 Touchables 之间有什么区别?任何详细的解释将不胜感激。

Arc*_*ano 6

React Native Gesture Handler 的 Touchables 与 React Native 版本之间的一个主要区别是 React Native Gesture Handler 的 Touchables 不能正确嵌套。因此,如果您有一张“卡片”,它具有操作功能,但也可以触摸其他任何地方以实现默认行为。你会遇到问题。

RNGH 的优点之一是 TapGesture 可以更好地检测滚动“卡片”,因此在滑动时不会触发动画。 Pressable将此分类为unstable_pressDelay,并且从 SDK 42 开始在 Expo 中不可用。

此外,React Native Gesture Handler 与 Touchables 之间的 API 并不是 1:1。有一些细微差别仅在您使用 TypeScript 时才会突出显示。

因此,为了更好地适应未来,实际上最好坚持使用 React Native 的PressableAPI 来处理典型行为。但是,如果您需要一些特定的低级控制或非标准手势(例如滑动),请使用 RNGH。


use*_*135 5

我认为他们文档上的描述非常有用:

Gesture Handler 库提供了 RN 的可触摸组件的实现,这些组件基于本机按钮,不依赖于 RN 使用的 JS 响应器系统。我们的可触摸实现遵循相同的 API,旨在成为 React Native 中可用的可触摸的替代品。

使用 RNGH touchables 作为替代从 React Native 导入的这些的动机是通过利用平台原生触摸系统而不是依赖于 JS 响应器系统来更密切地遵循内置的原生行为。这些可触摸对象及其反馈行为与原生手势生态系统深度集成,可以轻松地以更可预测的方式与其他原生组件(例如 ScrollView)和手势处理程序连接,这遵循原生应用程序的行为。

https://docs.swmansion.com/react-native-gesture-handler/docs/component-touchables

因此,如果您在本机端(而不是 Web),最好使用来自 RNGH 的 Touchables。也许他们很快就会包括来自 RN 的新的可压组件。