A wrapper for react-native Touchable
components to simplify the API and make the Android ripple effect work by default. Based on react-native-gesture-handler.
It lets you import only component and forget about which platform you are using, it will default to the best behavior for the platform.
yarn add @appandflow/touchable
import Touchable from '@appandflow/touchable';
If you are using things like ScrollView
make sure to use the one included in react-native-gesture-handler for better interactions.
- opacity
- highlight
- none
You can disable the touch by passing disabled true
. Default false
.
TODO: This doesn't work anymore as of V2
Toggle whether or not to use the ripple effects on Android. By default this is true on Android.
If false don't forget to add a feedback
-
This version now uses react-native-gesture-handler. If you are using Expo it is included by default, otherwise you will need to install it. For a version that uses RN primitives use @^1.0.0.
-
native={false} is not currently implemented.
-
onLongPress is no longer supported, use LongPressGestureHandler from react-native-gesture-handler instead.
Take a look at example folder. Link
import React, { Component } from 'react';
import { Text, View, Alert } from 'react-native';
import Touchable from '@appandflow/touchable';
class App extends Component {
_handleAlert = feedback => {
Alert.alert(`You touch the feedback: ${feedback}`);
};
render() {
return (
<View style={styles.container}>
<Touchable
feedback="opacity"
style={[styles.button, styles.opacity]}
onPress={() => this._handleAlert('opacity')}
>
<Text style={styles.buttonText}>OPACITY</Text>
</Touchable>
<Touchable
feedback="highlight"
style={[styles.button, styles.highlight]}
onPress={() => this._handleAlert('highlight')}
>
<Text style={styles.buttonText}>HIGHLIGHT</Text>
</Touchable>
<Touchable
feedback="none"
style={[styles.button, styles.none]}
onPress={() => this._handleAlert('none')}
>
<Text style={styles.buttonText}>NONE</Text>
</Touchable>
</View>
);
}
}