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). | ||
|  | 
 |