何时使用TouchableNativeFeedback,TouchableHighlight或TouchableOpacity?

dam*_*net 70 react-native

在本地做出反应,至少有三种方法可以使一个按钮:TouchableNativeFeedback,TouchableHighlightTouchableOpacity.还有TouchableWithoutFeedback,文件明确指出你不应该使用,因为"所有回复的元素在触摸时都应该有视觉反馈".

这三者之间还有其他重大差异吗?其中一个是goto组件吗?在什么情况下,你应该使用TouchableHighlightTouchableOpacity?是否有任何性能影响?

我现在正在编写一个应用程序,并发现这三者在tap和动作之间都有明显的延迟(在这种情况下是导航更改).有什么方法可以让它更快乐吗?

Eda*_*rit 76

来源:https://medium.com/differential/better-cross-platform-react-native-components-cb8aadeba472,来自Nick Wientge

TouchableHighlight

•作用:按下时使元素的背景变暗或变亮.

•何时使用:在iOS上用于可触摸元素或具有实心形状或背景的按钮,以及在ListView项目上.

TouchableOpacity

•作用:按下时减轻整个元素的不透明度.

•何时使用:在iOS上,可以使用独立文本的可触摸元素或没有背景颜色的图标.

TouchableNativeFeedback

•作用:按下时为背景添加涟漪效果.

•何时使用它:在Android上几乎所有可触摸的元素.


mie*_*koe 7

嗯,这就是我通常决定使用的方法:

  • 如果我只为Android构建,并且该组件足够大以至于本机反馈将明显不同于使用其他反馈,那么我使用 TouchableNativeFeedback
  • 如果我想控制组件的不透明度,或者我希望按钮在触摸时有颜色,并且我不想控制Touchable中某些元素的聚焦状态,那么我使用TouchableHighlight.(TouchableOpacity当你自己控制不透明度时,有一些奇怪的部分).
  • 在所有其他情况下,我使用,TouchableOpacity因为它比"裸"更"裸"TouchableHighlight

  • 这个答案是一个有用的开始……但我希望找到更可靠的技术和/或设计相关的原因来解释为什么要使用一个而不是另一个。 (2认同)