I am trying to call multiple functions when I click onPress
using TouchableOpacity
For example:
functionOne(){
// do something
You can also make this with a boolean value. Example ;
<TouchableHighlight onPress{() => { this.functionOne() || this.functionTwo()}}/>
If you want to call a function and then navigate to a screen, then do this way.
<TouchableOpacity onPress={() => { this.onSubmit(); this.props.navigation.navigate('NextScreen') }}>
Recommended Solution:
<TouchableWithoutFeedback
onPress={() => {
function1();
function2();
}}>
You can use these props:
onPress
Called when the touch is released
onPressIn
Called as soon as the touchable element is pressed and invoked beforeonPress
.
<TouchableWithoutFeedback
onPress={() => {
function1();
}}
onPressIn={() => {
function2();
}}
>
There are a few ways to achieve this. One option would be to define a function that calls functionOne
and functionTwo
, and pass that on your onPress
handler like so:
functionOne(){
// do something
}
functionTwo(){
// do something
}
functionCombined() {
this.functionOne();
this.functionTwo();
}
<TouchableHighlight onPress={() => this.functionCombined()}/>
Alternatively, and more concisely, you could express functionCombined
inline in your JSX like so:
functionOne(){
// do something
}
functionTwo(){
// do someting
}
<TouchableHighlight
onPress={
() => { this.functionOne(); this.functionTwo(); }
}
/>
Seeking your comment, you want to not used arrow, so I'm suggest to use something like this:
functionOne(){
// do something
}
functionTwo(){
// do someting
}
mixFunction=()=>{
functionOne();
functionTwo();
}
mixFuncWithoutArrow(){
functionOne();
functionTwo();
}
<TouchableHighlight onPress{this.mixFunction() || this.mixFuncWithoutArrow.bind(this)}/>