En Reaccionar nativo, hay por lo menos tres maneras de hacer un botón: TouchableNativeFeedback
, TouchableHighlight
y TouchableOpacity
. También existe TouchableWithoutFeedback
, que la documentación indica claramente que no debes usar porque "todos los elementos que responden a la prensa deben tener una retroalimentación visual cuando se tocan".
- TouchableNativeFeedback es solo para Android y "reemplaza la vista con otra instancia de RCTView"
- TouchableHighlight "agrega una vista a la jerarquía de vista"
- TouchableOpacity funciona "sin cambiar la jerarquía de vistas"
¿Existen otras diferencias significativas entre los tres? ¿Uno de ellos es el componente goto? ¿En qué caso debería usar TouchableHighlight
over TouchableOpacity
? ¿Hay implicaciones en el rendimiento?
Estoy escribiendo una aplicación en este momento y encuentro que las tres tienen un retraso significativo entre el toque y la acción (en este caso, un cambio de navegación). ¿Hay alguna forma de hacerlo más ágil?
fuente
Respuestas:
fuente: https://medium.com/differential/better-cross-platform-react-native-components-cb8aadeba472 , por Nick Wientge
TouchableHighlight
• Qué hace: Oscurece o aclara el fondo del elemento cuando se presiona.
• Cuándo usarlo: en iOS para elementos táctiles o botones que tienen una forma sólida o un fondo, y en elementos ListView.
TouchableOpacity
• Qué hace: aclara la opacidad de todo el elemento cuando se presiona.
• Cuándo usarlo: En iOS para elementos táctiles que son texto independiente o íconos sin color de fondo.
TouchableNativeFeedback
• Qué hace: agrega un efecto dominó al fondo cuando se presiona.
• Cuándo usarlo: en Android para casi todos los elementos táctiles.
fuente
Bueno, así es como suelo decidir qué usar:
TouchableNativeFeedback
TouchableHighlight
. (TouchableOpacity
tiene algunas partes extrañas cuando tú mismo controlas la opacidad).TouchableOpacity
porque está más "desnudo" queTouchableHighlight
fuente
Creo que la principal diferencia esencial como se indica en Docs:
TouchableHighlight must have one child (not zero or more than one). If you wish to have several child components, wrap them in a View.
enlaceTocable Resaltar
Opacidad táctil
fuente
Si quieres
TouchableHighlight
TouchableOpacity
fuente
<TouchableHighlight underlayColor="transparent" />
... y Facebook mezcla todos los de su aplicación F8 github.com/fbsamples/f8app/blob/master/js/common/F8Touchable.js