50 lines
1.7 KiB
Markdown
50 lines
1.7 KiB
Markdown
---
|
|
title: Touchables
|
|
---
|
|
## React Native - Touchables
|
|
|
|
Some of the main features of mobile devices revolve around user touch interactions. How a mobile app handles and responds to these interactions can make or break the user's experience.
|
|
|
|
React Native ships with a `Button` component which works for many standard `onPress` interactions. By default, it will give the user feedback by changing the opacity to show the button was pressed. Usage:
|
|
|
|
```js
|
|
<Button onPress={handlePress} title="Submit" />
|
|
```
|
|
|
|
For more complex use cases, React Native has APIs build in to handle press interactions called `Touchables`.
|
|
|
|
```
|
|
TouchableHighlight
|
|
TouchableNativeFeedback
|
|
TouchableOpacity
|
|
TouchableWithoutFeedback
|
|
```
|
|
|
|
Each of these Touchable components can be styled and used with a library, like the built-in `Animated`, allowing you to make your own types of custom user feedback.
|
|
|
|
Some examples of using these components:
|
|
|
|
```js
|
|
// with images
|
|
<TouchableHighlight onPress={this.handlePress}>
|
|
<Image
|
|
style={styles.button}
|
|
source={require('./logo.png')}
|
|
/>
|
|
</TouchableHighlight>
|
|
|
|
// with text
|
|
<TouchableHighlight onPress={this.handlePress}>
|
|
<Text>Hello</Text>
|
|
</TouchableHighlight>
|
|
```
|
|
|
|
You can handle different types of button presses as well. By default, buttons and touchables are configured to handle regular taps, but you can also denote a function to call for press and hold interactions for example.
|
|
|
|
```js
|
|
<TouchableHighlight onPress={this.handlePress} onLongPress={this.handleLongPress}>
|
|
```
|
|
|
|
To see all of the available props and how these components work, you can look at [the JavaScript source code for Touchables here](https://github.com/facebook/react-native/tree/master/Libraries/Components/Touchable).
|
|
|