react-native-TouchableSetActive
Touchable component for React Native that enables more advanced styling by setting an active state. Most useful for building your own touchable/button components on top of.
Install
$ npm install react-native-touchable-set-active --save
Usage
First, require the TouchableSetActive
component in your project.
var TouchableSetActive = ;
There are two different ways you can use this component. They both involve passing a value to the setActive
property on TouchableSetActive
.
setActive={this}
The simplest implementation is achieved by just passing this
. The component will set an active
state (using this.setState
) on the parent component. To toggle a style, set one conditionally in the style property that is dependent on this.state.active
.
Component { superprops; thisstate = {}; } { return <TouchableSetActive setActive=this style= stylesinactiveButton thisstateactive && stylesactiveButton > <Text style=thisstateactive && stylesactiveText > Example Button </Text> </TouchableSetActive> ; }
setActive={function}
Instead of passing this
, you can provide a function. It will be called whenever the component's active state changes, with a boolean value representing the active state as the only argument.
Component { superprops; thisstate = active: false ; } { return <TouchableSetActive setActive= { this; } style= !thisstateactive && stylesinactiveButton thisstateactive && stylesactiveButton > <Text style=thisstateactive && stylesactiveText > Example Button </Text> </TouchableSetActive> ; }
Additional Props
TouchableSetActive
is just like any other Touchable component in that it supports the following properties:
onPressInonPressOutonPressonLongPress
It also supports touchable delay properties that are (hopefully) landing in React Native core soon (via #1255):
/** * Delay in ms, from the release of the touch, before onPress is called. */delayOnPress: ReactPropTypesnumber/** * Delay in ms, from the start of the touch, before onPressIn is called. */delayOnPressIn: ReactPropTypesnumber/** * Delay in ms, from the release of the touch, before onPressOut is called. */delayOnPressOut: ReactPropTypesnumber/** * Delay in ms, from onPressIn, before onLongPress is called. */delayOnLongPress: ReactPropTypesnumber
Support for delayOnLongPress
is dependent on some underlying changes to the Touchable
library. Unfortunately, it won't be available until those changes are committed. If you really need it now, take a look at the PR or my branch which adds this functionality. It should also be noted that until this PR lands, delayOnPressIn
can be set to a maximum of 249
ms before throwing an error.
Additionally, the props delayActive
and delayInactive
can be used to decouple the active state from the press events.
/** * Delay in ms, from the start of the touch, before the active state is shown. */delayActive: ReactPropTypesnumber/** * Delay in ms, from the start of the active state, before it becomes inactive. */delayInactive: ReactPropTypesnumber
License
MIT © Jeff Stout